60 lines
1.7 KiB
Docker
60 lines
1.7 KiB
Docker
ARG ANKISYNCD_ROOT=/opt/ankisyncd
|
|
ARG PYTHONUSERBASE=/opt/venv
|
|
|
|
# -- BUILDER --
|
|
FROM library/python:3.9-buster as builder
|
|
|
|
ARG ANKISYNCD_ROOT
|
|
WORKDIR ${ANKISYNCD_ROOT}
|
|
|
|
COPY bin/download-release.sh ./bin/download-release.sh
|
|
|
|
ARG PYTHONUSERBASE
|
|
RUN sh ./bin/download-release.sh && \
|
|
pip3 install --upgrade pip && \
|
|
pip3 install --user -r ./release/requirements.txt
|
|
|
|
# -- DEPLOYER --
|
|
FROM python:3.9-slim-buster
|
|
|
|
# Copy Python dependencies
|
|
ARG PYTHONUSERBASE
|
|
ENV PYTHONUSERBASE=${PYTHONUSERBASE}
|
|
COPY --from=builder ${PYTHONUSERBASE} ${PYTHONUSERBASE}
|
|
|
|
# Copy Anki Sync Server release and scripts
|
|
ARG ANKISYNCD_ROOT
|
|
COPY --from=builder ${ANKISYNCD_ROOT}/release ${ANKISYNCD_ROOT}
|
|
WORKDIR ${ANKISYNCD_ROOT}
|
|
|
|
# Move ankisyncctl.py to the working directory and make it executable
|
|
RUN mv /opt/ankisyncd/ankisyncd_cli/ankisyncctl.py /opt/ankisyncd/ankisyncctl.py && \
|
|
chmod +x /opt/ankisyncd/ankisyncctl.py
|
|
|
|
# Create data volume.
|
|
ARG ANKISYNCD_DATA_ROOT=/srv/ankisyncd
|
|
VOLUME ${ANKISYNCD_DATA_ROOT}
|
|
|
|
# Set default environment variables.
|
|
ARG ANKISYNCD_PORT=27701
|
|
ARG ANKISYNCD_BASE_URL=/sync/
|
|
ARG ANKISYNCD_BASE_MEDIA_URL=/msync/
|
|
|
|
ENV ANKISYNCD_HOST=0.0.0.0 \
|
|
ANKISYNCD_PORT=${ANKISYNCD_PORT} \
|
|
ANKISYNCD_DATA_ROOT=${ANKISYNCD_DATA_ROOT} \
|
|
ANKISYNCD_BASE_URL=${ANKISYNCD_BASE_URL} \
|
|
ANKISYNCD_BASE_MEDIA_URL=${ANKISYNCD_BASE_MEDIA_URL} \
|
|
ANKISYNCD_AUTH_DB_PATH=/data/auth.db \
|
|
ANKISYNCD_SESSION_DB_PATH=/data/session.db \
|
|
ANKISYNCD_DATA_ROOT=/data
|
|
|
|
COPY bin/entrypoint.sh ./bin/entrypoint.sh
|
|
|
|
EXPOSE ${ANKISYNCD_PORT}
|
|
|
|
# TODO: Change to ENTRYPOINT. Currently CMD to allow shell access if needed.
|
|
CMD ["/bin/sh", "./bin/entrypoint.sh"]
|
|
|
|
HEALTHCHECK --interval=60s --timeout=3s CMD python -c "import requests; requests.get('http://127.0.0.1:${ANKISYNCD_PORT}/')"
|