| @ -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"] | |||