mirror of
https://github.com/rr-/szurubooru.git
synced 2025-07-17 08:26:24 +00:00
server/docker: unify test and main Dockerfiles
This commit is contained in:
@ -1,13 +1,12 @@
|
||||
FROM alpine:3.12
|
||||
ARG ALPINE_VERSION=3.12
|
||||
|
||||
|
||||
FROM alpine:$ALPINE_VERSION as prereqs
|
||||
WORKDIR /opt/app
|
||||
|
||||
RUN \
|
||||
apk --no-cache add \
|
||||
RUN apk --no-cache add \
|
||||
python3 \
|
||||
dumb-init \
|
||||
ffmpeg \
|
||||
py3-waitress \
|
||||
py3-setuptools \
|
||||
py3-pip \
|
||||
# from requirements.txt:
|
||||
py3-yaml \
|
||||
@ -19,30 +18,63 @@ RUN \
|
||||
py3-pynacl \
|
||||
py3-tz \
|
||||
py3-pyrfc3339 \
|
||||
&& \
|
||||
pip3 install --no-cache-dir --disable-pip-version-check \
|
||||
&& pip3 install --no-cache-dir --disable-pip-version-check \
|
||||
alembic \
|
||||
"coloredlogs==5.0" \
|
||||
youtube-dl \
|
||||
&& apk --no-cache del py3-pip
|
||||
&& apk --no-cache del py3-pip
|
||||
|
||||
COPY ./ /opt/app/
|
||||
RUN rm -rf /opt/app/szurubooru/tests
|
||||
|
||||
|
||||
FROM prereqs as testing
|
||||
WORKDIR /opt/app
|
||||
|
||||
RUN apk --no-cache add \
|
||||
py3-pip \
|
||||
py3-pytest \
|
||||
py3-pytest-cov \
|
||||
postgresql \
|
||||
&& pip3 install --no-cache-dir --disable-pip-version-check \
|
||||
pytest-pgsql \
|
||||
freezegun \
|
||||
&& apk --no-cache del py3-pip \
|
||||
&& addgroup app \
|
||||
&& adduser -SDH -h /opt/app -g '' -G app app \
|
||||
&& chown app:app /opt/app
|
||||
|
||||
COPY --chown=app:app ./szurubooru/tests /opt/app/szurubooru/tests/
|
||||
|
||||
ENV TEST_ENVIRONMENT="true"
|
||||
USER app
|
||||
ENTRYPOINT ["pytest", "--tb=short"]
|
||||
CMD ["szurubooru/"]
|
||||
|
||||
|
||||
FROM prereqs as release
|
||||
WORKDIR /opt/app
|
||||
|
||||
ARG PUID=1000
|
||||
ARG PGID=1000
|
||||
RUN \
|
||||
# Set users
|
||||
mkdir -p /opt/app /data && \
|
||||
addgroup -g ${PGID} app && \
|
||||
adduser -SDH -h /opt/app -g '' -G app -u ${PUID} app && \
|
||||
chown -R app:app /opt/app /data
|
||||
USER app
|
||||
|
||||
COPY --chown=app:app ./ /opt/app/
|
||||
RUN apk --no-cache add \
|
||||
dumb-init \
|
||||
py3-setuptools \
|
||||
py3-waitress \
|
||||
&& mkdir -p /opt/app /data \
|
||||
&& addgroup -g ${PGID} app \
|
||||
&& adduser -SDH -h /opt/app -g '' -G app -u ${PUID} app \
|
||||
&& chown -R app:app /opt/app /data
|
||||
|
||||
USER app
|
||||
CMD ["/opt/app/docker-start.sh"]
|
||||
|
||||
ARG PORT=6666
|
||||
ENV PORT=${PORT}
|
||||
EXPOSE ${PORT}
|
||||
|
||||
VOLUME ["/data/"]
|
||||
CMD ["/opt/app/docker-start.sh"]
|
||||
|
||||
ARG DOCKER_REPO
|
||||
ARG BUILD_DATE
|
||||
|
@ -1,50 +0,0 @@
|
||||
FROM alpine:3.12
|
||||
WORKDIR /opt/app
|
||||
|
||||
RUN \
|
||||
apk --no-cache add \
|
||||
python3 \
|
||||
ffmpeg \
|
||||
py3-pip \
|
||||
# from requirements.txt:
|
||||
py3-yaml \
|
||||
py3-psycopg2 \
|
||||
py3-sqlalchemy \
|
||||
py3-certifi \
|
||||
py3-numpy \
|
||||
py3-pillow \
|
||||
py3-pynacl \
|
||||
py3-tz \
|
||||
py3-pyrfc3339 \
|
||||
# for testing
|
||||
py3-pytest \
|
||||
py3-pytest-cov \
|
||||
postgresql \
|
||||
&& \
|
||||
pip3 install --no-cache-dir --disable-pip-version-check \
|
||||
alembic \
|
||||
"coloredlogs==5.0" \
|
||||
youtube-dl \
|
||||
# for testing
|
||||
pytest-pgsql \
|
||||
freezegun \
|
||||
&& apk --no-cache del py3-pip
|
||||
|
||||
ARG PUID=1000
|
||||
ARG PGID=1000
|
||||
RUN \
|
||||
# Set users
|
||||
mkdir -p /opt/app /data && \
|
||||
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 POSTGRES_HOST=x \
|
||||
POSTGRES_USER=x \
|
||||
POSTGRES_PASSWORD=x
|
||||
|
||||
COPY --chown=app:app ./ /opt/app/
|
||||
|
||||
ENTRYPOINT ["pytest", "--tb=short"]
|
||||
CMD ["szurubooru/"]
|
@ -2,7 +2,7 @@
|
||||
set -e
|
||||
|
||||
docker run --rm \
|
||||
-t $(docker build -f ${DOCKERFILE_PATH:-Dockerfile}.test -q .) \
|
||||
-t $(docker build --target testing -q .) \
|
||||
--color=no szurubooru/
|
||||
|
||||
exit $?
|
||||
|
@ -22,9 +22,12 @@ def _merge(left: Dict, right: Dict) -> Dict:
|
||||
|
||||
|
||||
def _docker_config() -> Dict:
|
||||
for key in ["POSTGRES_USER", "POSTGRES_PASSWORD", "POSTGRES_HOST"]:
|
||||
if not os.getenv(key, False):
|
||||
raise errors.ConfigError(f'Environment variable "{key}" not set')
|
||||
if "TEST_ENVIRONMENT" not in os.environ:
|
||||
for key in ["POSTGRES_USER", "POSTGRES_PASSWORD", "POSTGRES_HOST"]:
|
||||
if key not in os.environ:
|
||||
raise errors.ConfigError(
|
||||
f'Environment variable "{key}" not set'
|
||||
)
|
||||
return {
|
||||
"debug": True,
|
||||
"show_sql": int(os.getenv("LOG_SQL", 0)),
|
||||
|
Reference in New Issue
Block a user