57 lines
1.8 KiB
Docker
57 lines
1.8 KiB
Docker
FROM python:3.10-slim AS build
|
|
ENV PATH="/root/.local/bin:$PATH"
|
|
WORKDIR /app
|
|
COPY . /app
|
|
# Install poetry
|
|
RUN set -eux; \
|
|
apt-get update; \
|
|
apt-get install -y --no-install-recommends curl; \
|
|
curl -sSL https://install.python-poetry.org | python3 -; \
|
|
poetry --version
|
|
# Build gerapy
|
|
RUN set -eux; \
|
|
poetry install; \
|
|
poetry build --format wheel
|
|
|
|
|
|
FROM python:3.10-slim
|
|
# Install gerapy
|
|
ENV GERAPY_HOME_DIR ${GERAPY_HOME_DIR:-/home/gerapy}
|
|
ENV GERAPY_GROUP ${GERAPY_GROUP:-gerapy}
|
|
ENV GERAPY_GID ${GERAPY_GID:-10000}
|
|
ENV GERAPY_USER ${GERAPY_USER:-gerapy}
|
|
ENV GERAPY_UID ${GERAPY_UID:-10000}
|
|
ENV GERAPY_PORT ${GERAPY_PORT:-8000}
|
|
WORKDIR $GERAPY_HOME_DIR
|
|
COPY --from=build /app/dist/gerapy-*.whl /tmp/
|
|
RUN \
|
|
set -eux; \
|
|
apt-get update; \
|
|
apt-get install -y --no-install-recommends tini gosu; \
|
|
pip install /tmp/gerapy-*.whl; \
|
|
rm -f /tmp/gerapy-*.whl; \
|
|
mkdir -p $GERAPY_HOME_DIR; \
|
|
addgroup --gid $GERAPY_GID $GERAPY_GROUP; \
|
|
adduser --uid $GERAPY_UID --home $GERAPY_HOME_DIR --ingroup $GERAPY_GROUP $GERAPY_USER; \
|
|
chown $GERAPY_USER:$GERAPY_GROUP $GERAPY_HOME_DIR; \
|
|
pip cache purge; \
|
|
apt autoclean; \
|
|
rm -rf /var/lib/apt/lists/*;
|
|
# Build run script
|
|
RUN \
|
|
set -eux; \
|
|
runscript="/usr/local/bin/gerapy-runner"; \
|
|
echo "#!/bin/sh -ex" > $runscript; \
|
|
echo >> $runscript; \
|
|
echo "find \"$GERAPY_HOME_DIR\" \! -user \"$GERAPY_USER\" -exec chown $GERAPY_USER:$GERAPY_GROUP '{}' +" >> $runscript; \
|
|
cmd="gosu $GERAPY_USER:$GERAPY_GROUP gerapy"; \
|
|
echo "$cmd init ." >> $runscript; \
|
|
echo "$cmd migrate" >> $runscript; \
|
|
echo "$cmd initadmin" >> $runscript; \
|
|
echo "$cmd runserver 0.0.0.0:$GERAPY_PORT" >> $runscript; \
|
|
chmod +x $runscript;
|
|
VOLUME $GERAPY_HOME_DIR
|
|
EXPOSE $GERAPY_PORT
|
|
ENTRYPOINT ["tini", "--"]
|
|
CMD ["gerapy-runner"]
|