| @ -0,0 +1,40 @@ | |||||
| # yup, python 3.11! | |||||
| FROM python:3.11-slim | |||||
| # install nginx y otras cosas | |||||
| RUN apt-get update && apt-get install nginx netcat-openbsd curl vim jq rsync -y | |||||
| # copy our nginx configuration to overwrite nginx defaults | |||||
| RUN rm /etc/nginx/sites-enabled/default | |||||
| RUN rm /etc/nginx/sites-available/default | |||||
| COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf | |||||
| # link nginx logs to container stdout | |||||
| RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log | |||||
| # copy the django code | |||||
| COPY ./src ./app | |||||
| RUN chgrp -R 0 ./app && chmod -R g=u ./app | |||||
| RUN chgrp -R 0 /var/lib/nginx && chmod -R g=u /var/lib/nginx | |||||
| # change our working directory to the django projcet roo | |||||
| WORKDIR /app | |||||
| # create virtual env (notice the location?) | |||||
| # update pip | |||||
| # install requirements | |||||
| RUN python -m venv /opt/venv && \ | |||||
| /opt/venv/bin/python -m pip install pip --upgrade && \ | |||||
| /opt/venv/bin/python -m pip install -r requirements.txt | |||||
| # Añade path a .bashrc | |||||
| RUN echo "export PATH=/opt/venv/bin/:$PATH" >> /root/.bashrc | |||||
| # make our entrypoint.sh executable | |||||
| RUN chmod +x config/entrypoint.sh | |||||
| #EXPOSE 8080 | |||||
| # execute our entrypoint.sh file | |||||
| CMD ["./config/entrypoint.sh"] | |||||
| @ -1,61 +0,0 @@ | |||||
| # syntax=docker/dockerfile:1 | |||||
| ################## | |||||
| # BUILDER # | |||||
| ################## | |||||
| FROM python:3.11.4-slim-buster AS builder | |||||
| # set work directory | |||||
| WORKDIR /app | |||||
| # set environment variables | |||||
| ENV PYTHONDONTWRITEBYTECODE=1 | |||||
| ENV PYTHONUNBUFFERED=1 | |||||
| # install system dependencies | |||||
| RUN apt-get update && \ | |||||
| apt-get install -y --no-install-recommends gcc | |||||
| # lint | |||||
| RUN pip install --upgrade pip | |||||
| RUN pip install flake8==6.0.0 | |||||
| COPY . /app/ | |||||
| RUN flake8 --ignore=E501,F401,E126 . | |||||
| COPY ./src/requirements.txt . | |||||
| RUN pip wheel --no-cache-dir --no-deps --wheel-dir /app/wheels -r requirements.txt | |||||
| ################## | |||||
| # FINAL # | |||||
| ################## | |||||
| FROM python:3.11.4-slim-buster | |||||
| # create the appropriate directories | |||||
| ENV APP_HOME=/app | |||||
| RUN mkdir -p $APP_HOME | |||||
| WORKDIR $APP_HOME | |||||
| # install system dependencies | |||||
| RUN apt-get update && apt-get install -y sqlite3 netcat vim procps curl jq | |||||
| COPY --from=builder /app/wheels /wheels | |||||
| COPY --from=builder /app/requirements.txt . | |||||
| RUN pip install --upgrade pip | |||||
| RUN pip install --no-cache /wheels/* | |||||
| # copy entrypoint.sh | |||||
| COPY ./entrypoint.sh . | |||||
| # copy project | |||||
| COPY . $APP_HOME | |||||
| # change to the app user | |||||
| WORKDIR $APP_HOME/src | |||||
| # run entrypoint.sh | |||||
| ENTRYPOINT ["/app/entrypoint.sh"] | |||||