server/docker: use Alpine-based image for space savings
This commit is contained in:
		
							parent
							
								
									6da18036a4
								
							
						
					
					
						commit
						4fe9c5f4ca
					
				@ -2,6 +2,8 @@
 | 
			
		||||
.pylintrc
 | 
			
		||||
mypy.ini
 | 
			
		||||
 | 
			
		||||
# Python requirements files
 | 
			
		||||
requirements.txt
 | 
			
		||||
dev-requirements.txt
 | 
			
		||||
 | 
			
		||||
# Docker build files
 | 
			
		||||
 | 
			
		||||
@ -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"]
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
exec waitress-serve-3 --port ${PORT} szurubooru.facade:app
 | 
			
		||||
@ -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
 | 
			
		||||
docker run --rm -t ${IMAGE_NAME}-test
 | 
			
		||||
 | 
			
		||||
exit $?
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user