Optimized Dockerfile to reduce uncompressed image size (#276)
* Optimized Dockerfile to reduce uncompressed image size Combining apk del commands in the same layer as their add commands shaves off ~270MB when uncompressed. * Skip libffi-dev rust cargo installation on x86_64
This commit is contained in:
parent
f1a0de2090
commit
4cc2dd4b54
33
Dockerfile
33
Dockerfile
@ -7,37 +7,36 @@ WORKDIR /usr/src/shynet
|
||||
ARG GF_UID="500"
|
||||
ARG GF_GID="500"
|
||||
RUN apk update && \
|
||||
apk add gettext curl bash npm libffi-dev rust cargo
|
||||
apk add --no-cache gettext bash npm postgresql-libs && \
|
||||
test "$(arch)" != "x86_64" && apk add libffi-dev rust cargo || echo "amd64 build, skipping Rust installation"
|
||||
# libffi-dev and rust are used for the cryptography package,
|
||||
# which we indirectly rely on. Necessary for aarch64 support.
|
||||
|
||||
# Collect GeoIP Database
|
||||
RUN curl -m 180 "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&license_key=kKG1ebhL3iWVd0iv&suffix=tar.gz" | tar -xvz -C /tmp && \
|
||||
RUN apk add --no-cache curl && \
|
||||
curl -m 180 "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&license_key=kKG1ebhL3iWVd0iv&suffix=tar.gz" | tar -xvz -C /tmp && \
|
||||
curl -m 180 "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=kKG1ebhL3iWVd0iv&suffix=tar.gz" | tar -xvz -C /tmp && \
|
||||
mv /tmp/GeoLite2*/*.mmdb /etc && \
|
||||
apk del curl
|
||||
apk --purge del curl
|
||||
|
||||
# Move dependency files
|
||||
COPY poetry.lock pyproject.toml ./
|
||||
COPY package.json package-lock.json ../
|
||||
# Django expects node_modules to be in its parent directory.
|
||||
|
||||
# Install more dependencies
|
||||
RUN apk add --no-cache postgresql-libs && \
|
||||
apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev libressl-dev libffi-dev && \
|
||||
# Install more dependencies and cleanup build dependencies afterwards
|
||||
RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev libressl-dev libffi-dev && \
|
||||
npm i -P --prefix .. && \
|
||||
pip install poetry==1.2.2
|
||||
|
||||
# Install Python dependencies
|
||||
RUN poetry config virtualenvs.create false && \
|
||||
poetry run pip install "Cython<3.0" "pyyaml==5.4.1" --no-build-isolation && \
|
||||
poetry install --no-dev --no-interaction --no-ansi
|
||||
|
||||
# Cleanup dependencies & setup user group
|
||||
RUN apk --purge del .build-deps && \
|
||||
pip install poetry==1.2.2 && \
|
||||
poetry config virtualenvs.create false && \
|
||||
poetry run pip install "Cython<3.0" "pyyaml==5.4.1" --no-build-isolation && \
|
||||
poetry install --no-dev --no-interaction --no-ansi && \
|
||||
apk --purge del .build-deps && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
rm /var/cache/apk/* && \
|
||||
addgroup --system -g $GF_GID appgroup && \
|
||||
rm /var/cache/apk/*
|
||||
|
||||
# Setup user group
|
||||
RUN addgroup --system -g $GF_GID appgroup && \
|
||||
adduser appuser --system --uid $GF_UID -G appgroup && \
|
||||
mkdir -p /var/local/shynet/db/ && \
|
||||
chown -R appuser:appgroup /var/local/shynet
|
||||
|
Loading…
Reference in New Issue
Block a user