diff --git a/server/.dockerignore b/server/.dockerignore index bdbf1d6..725fbe6 100644 --- a/server/.dockerignore +++ b/server/.dockerignore @@ -2,6 +2,8 @@ .pylintrc mypy.ini +# Python requirements files +requirements.txt dev-requirements.txt # Docker build files diff --git a/server/Dockerfile b/server/Dockerfile index a5ac0d9..a396793 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -1,30 +1,44 @@ -FROM python:3.6-slim +FROM alpine:latest WORKDIR /opt/app -COPY requirements.txt ./requirements.txt RUN \ - # Install ffmpeg - apt-get -yqq update && \ - apt-get -yq install --no-install-recommends ffmpeg && \ - rm -rf /var/lib/apt/lists/* && \ - # Install waitress - pip3 install --no-cache-dir waitress && \ - # Install app requirements - pip3 install --no-cache-dir -r ./requirements.txt - -COPY ./ /opt/app/ + apk --no-cache add \ + python3 \ + dumb-init \ + ffmpeg \ + py3-waitress \ + # from requirements.txt: + py3-yaml \ + py3-psycopg2 \ + py3-sqlalchemy \ + py3-certifi \ + py3-numpy \ + py3-pillow \ + py3-pynacl \ + py3-tz \ + py3-rfc3339 \ + && \ + pip3 install --no-cache-dir --disable-pip-version-check \ + alembic \ + "coloredlogs==5.0" \ + "elasticsearch>=5.0.0,<7.0.0" \ + "elasticsearch-dsl>=5.0.0,<7.0.0" \ + && exit 0 ARG PUID=1000 ARG PGID=1000 RUN \ # Set users mkdir -p /opt/app /data && \ - groupadd -g ${PGID} app && \ - useradd -d /opt/app -M -c '' -g app -r -u ${PUID} app && \ + addgroup -g ${PGID} app && \ + adduser -SDH -h /opt/app -g '' -G app -u ${PUID} app && \ chown -R app:app /opt/app /data USER app -ENV PORT=6666 +COPY --chown=app:app ./ /opt/app/ + +ARG PORT=6666 +ENV PORT=${PORT} EXPOSE ${PORT} VOLUME ["/data/"] CMD ["/opt/app/docker-start.sh"] diff --git a/server/docker-start.sh b/server/docker-start.sh index f8b17f4..9fc2e34 100755 --- a/server/docker-start.sh +++ b/server/docker-start.sh @@ -1,8 +1,8 @@ -#!/bin/sh +#!/usr/bin/dumb-init /bin/sh set -e cd /opt/app alembic upgrade head echo "Starting szurubooru API on port ${PORT}" -exec waitress-serve --port ${PORT} szurubooru.facade:app \ No newline at end of file +exec waitress-serve-3 --port ${PORT} szurubooru.facade:app \ No newline at end of file diff --git a/server/hooks/test b/server/hooks/test index e10a759..6c4c043 100755 --- a/server/hooks/test +++ b/server/hooks/test @@ -10,7 +10,14 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} WORKDIR /opt/app USER root -RUN pip3 install --no-cache-dir pytest-cov freezegun +RUN apk --no-cache add \ + py3-pytest \ + py3-pytest-cov \ + && \ + pip3 install \ + --no-cache-dir \ + --disable-pip-version-check \ + freezegun USER app ENV POSTGRES_HOST=x \ POSTGRES_USER=x \ @@ -20,4 +27,6 @@ CMD ["pytest", "szurubooru/", \ "--cov-report=term-missing", "--cov=szurubooru", "--tb=short"] EOF -docker run --rm -t ${IMAGE_NAME}-test \ No newline at end of file +docker run --rm -t ${IMAGE_NAME}-test + +exit $? diff --git a/server/requirements.txt b/server/requirements.txt index 3a312bb..5bf22f4 100644 --- a/server/requirements.txt +++ b/server/requirements.txt @@ -8,6 +8,6 @@ elasticsearch-dsl>=5.0.0,<7.0.0 certifi>=2017.11.5 numpy>=1.8.2 pillow>=4.3.0 -pynacl==1.2.1 +pynacl>=1.2.1 pytz>=2018.3 pyRFC3339>=1.0