Last active
January 15, 2022 23:24
-
-
Save Goldziher/942f4a027a7fa1e2cafaa35e0333b6dc to your computer and use it in GitHub Desktop.
Starlite+poetry example dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM python:3.10-slim AS install | |
RUN apt-get update \ | |
&& apt-get upgrade -y \ | |
&& apt-get install -y --no-install-recommends curl \ | |
&& apt-get autoremove -y | |
RUN pip install --upgrade pip | |
WORKDIR /app/ | |
# install poetry and keep the get-poetry script so it can be reused later. | |
ENV POETRY_HOME="/opt/poetry" | |
RUN curl https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py > get-poetry.py | |
RUN python get-poetry.py | |
FROM install AS app-image | |
# allow controlling the poetry installation of dependencies via external args | |
ARG INSTALL_ARGS="--no-root --no-dev" | |
WORKDIR /app/ | |
# let poetry know where its installed and add the poetry bin to the path | |
ENV POETRY_HOME="/opt/poetry" | |
ENV PATH="$POETRY_HOME/bin:$PATH" | |
COPY . . | |
# install without virtualenv, since we are inside a continer, follow by cleanup | |
RUN poetry config virtualenvs.create false \ | |
&& poetry install $INSTALL_ARGS \ | |
&& python get-poetry.py --uninstall \ | |
&& rm get-poetry.py | |
# cleanup curl and apt cache | |
RUN apt-get purge -y curl \ | |
&& apt-get clean -y \ | |
&& rm -rf /root/.cache \ | |
&& rm -rf /var/apt/lists/* \ | |
&& rm -rf /var/cache/apt/* | |
# switch to a non-root user for security | |
RUN addgroup --system --gid 1001 "app-user" | |
RUN adduser --system --uid 1001 "app-user" | |
USER "app-user" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
There is no
CMD
orENTRY_POINT
instruction in the Dockerfile itself, because you can specify these in your docker-compose file, or using the docker-cli / in K8s configuration.