2022-11-09 13:56:50 -05:00
|
|
|
# syntax=docker/dockerfile:1
|
2023-08-19 21:59:43 +00:00
|
|
|
FROM python:3.11-slim as build
|
2022-11-09 13:56:50 -05:00
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
|
|
ENV PYTHONUNBUFFERED=1
|
2023-08-19 21:59:43 +00:00
|
|
|
|
|
|
|
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt apt-get update \
|
2023-08-24 21:51:39 +00:00
|
|
|
&& apt-get install -y --no-install-recommends build-essential libpq-dev python3-venv git
|
2023-08-19 21:59:43 +00:00
|
|
|
|
2023-08-26 03:06:53 +00:00
|
|
|
COPY . /neodb
|
|
|
|
|
2023-11-19 10:59:51 -05:00
|
|
|
RUN echo `cd /neodb && git rev-parse --short HEAD`-`cd /neodb/neodb-takahe && git rev-parse --short HEAD`-`date -u +%Y%m%d%H%M%S` > /neodb/build_version
|
2023-08-26 03:06:53 +00:00
|
|
|
RUN rm -rf /neodb/.git /neodb/neodb-takahe/.git
|
|
|
|
|
|
|
|
RUN mv /neodb/neodb-takahe /takahe
|
|
|
|
|
2023-08-17 02:09:36 -04:00
|
|
|
WORKDIR /neodb
|
2023-08-23 22:18:15 +00:00
|
|
|
RUN python -m venv /neodb-venv
|
2023-11-08 23:41:27 -05:00
|
|
|
RUN find misc/wheels-cache -type f | xargs -n 1 /neodb-venv/bin/python3 -m pip install || echo incompatible wheel ignored
|
|
|
|
RUN rm -rf misc/wheels-cache
|
2023-08-23 22:18:15 +00:00
|
|
|
RUN --mount=type=cache,sharing=locked,target=/root/.cache /neodb-venv/bin/python3 -m pip install --upgrade -r requirements.txt
|
2023-08-19 21:59:43 +00:00
|
|
|
|
|
|
|
WORKDIR /takahe
|
2023-08-23 22:18:15 +00:00
|
|
|
RUN python -m venv /takahe-venv
|
|
|
|
RUN --mount=type=cache,sharing=locked,target=/root/.cache /takahe-venv/bin/python3 -m pip install --upgrade -r requirements.txt
|
2023-08-19 21:59:43 +00:00
|
|
|
|
|
|
|
# runtime stage
|
|
|
|
FROM python:3.11-slim as runtime
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
|
|
|
|
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt-run apt-get update \
|
|
|
|
&& apt-get install -y --no-install-recommends libpq-dev \
|
2023-08-17 02:09:36 -04:00
|
|
|
busybox \
|
|
|
|
nginx \
|
2023-08-24 21:51:39 +00:00
|
|
|
gettext-base
|
2023-08-17 18:54:00 -04:00
|
|
|
RUN busybox --install
|
|
|
|
|
2023-08-26 01:27:18 +00:00
|
|
|
# postgresql and redis cli are not required, but install for development convenience
|
|
|
|
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt-run apt-get install -y --no-install-recommends postgresql-client redis-tools
|
2023-08-26 03:06:53 +00:00
|
|
|
RUN useradd -U app
|
|
|
|
RUN rm -rf /var/lib/apt/lists/*
|
2023-08-26 01:27:18 +00:00
|
|
|
|
2023-08-26 03:06:53 +00:00
|
|
|
COPY --from=build /neodb /neodb
|
2023-08-19 21:59:43 +00:00
|
|
|
WORKDIR /neodb
|
2023-08-23 22:18:15 +00:00
|
|
|
COPY --from=build /neodb-venv /neodb-venv
|
2023-09-25 19:47:46 +00:00
|
|
|
RUN NEODB_SECRET_KEY="t" NEODB_SITE_DOMAIN="x.y" NEODB_SITE_NAME="z" /neodb-venv/bin/python3 manage.py compilescss
|
|
|
|
RUN NEODB_SECRET_KEY="t" NEODB_SITE_DOMAIN="x.y" NEODB_SITE_NAME="z" /neodb-venv/bin/python3 manage.py collectstatic --noinput
|
2022-11-09 13:56:50 -05:00
|
|
|
|
2023-08-26 03:06:53 +00:00
|
|
|
COPY --from=build /takahe /takahe
|
2023-08-19 21:59:43 +00:00
|
|
|
WORKDIR /takahe
|
2023-08-23 22:18:15 +00:00
|
|
|
COPY --from=build /takahe-venv /takahe-venv
|
|
|
|
RUN TAKAHE_DATABASE_SERVER="postgres://x@y/z" TAKAHE_SECRET_KEY="t" TAKAHE_MAIN_DOMAIN="x.y" /takahe-venv/bin/python3 manage.py collectstatic --noinput
|
2023-08-17 18:54:00 -04:00
|
|
|
|
2023-08-20 04:27:23 +00:00
|
|
|
WORKDIR /neodb
|
2023-08-19 21:59:43 +00:00
|
|
|
COPY misc/bin/* /bin/
|
|
|
|
RUN mkdir -p /www
|
2023-08-17 18:54:00 -04:00
|
|
|
|
|
|
|
USER app:app
|
2022-11-09 13:56:50 -05:00
|
|
|
|
2023-08-21 21:46:51 +00:00
|
|
|
CMD [ "neodb-hello"]
|