Commit 690eb8b3 authored by Дмитрий Сафронов's avatar Дмитрий Сафронов
Browse files

Merge branch 'dockerfile' into 'master'

no more alpine

See merge request !5
parents a9bf5f95 7a15d625
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
ignored:
  - DL3007
  - DL3008
  - DL3013
  - DL3018
  - DL4006
+22 −18
Original line number Diff line number Diff line
ARG DOCKER_REGISTRY=registry.cyberbrain.pw
ARG DOCKER_IMAGE_GIT=$DOCKER_REGISTRY/tools/docker/git
ARG DOCKER_IMAGE_UBUNTU=$DOCKER_REGISTRY/tools/docker/ubuntu

############################################################

FROM $DOCKER_REGISTRY/tools/docker/git:latest AS git
FROM $DOCKER_IMAGE_GIT:latest AS git
RUN set -ex && \
	( git clone --depth=1 https://gitlab.cyberbrain.pw/tools/mirror/sopds.git /tmp || echo error: failed to clone master repository. ) && \
	ls -la /tmp

############################################################

FROM alpine:3.17 AS base
FROM $DOCKER_IMAGE_UBUNTU:latest AS base
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV BASE_DEPENDENCIES="sudo unzip"
ENV BASE_DEPENDENCIES="python3 python3-venv libpq5 libmariadb3 libxml2 libxslt1.1 libffi8 libjpeg8 zlib1g xz-utils bzip2"
ENV PATH="/opt/sopds/bin:$PATH"
WORKDIR /home/sopds
RUN set -ex && \
    apk --no-cache add python3 ${BASE_DEPENDENCIES} && \
    rm -rf /var/cache/apk/*
RUN apt-get update && \
    apt-get install --no-install-recommends -y ${BASE_DEPENDENCIES} && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

############################################################

FROM base AS builder
ENV BUILD_DEPENDENCIES="gcc build-base python3-dev musl-dev mariadb-connector-c-dev libpq-dev libxml2-dev libxslt-dev libffi-dev jpeg-dev zlib-dev xz-dev bzip2-dev"
ENV BUILD_DEPENDENCIES="pkg-config build-essential python3-dev libmariadb-dev libpq-dev libxml2-dev libxslt-dev libffi-dev libjpeg-dev zlib1g-dev liblzma-dev libbz2-dev"
COPY --from=git /tmp/requirements.txt /home/sopds/
COPY requirements-override.txt /home/sopds/
RUN set -ex && \
    apk --no-cache add --virtual build-dependencies ${BUILD_DEPENDENCIES} && \
RUN apt-get update && \
    apt-get install --no-install-recommends -y ${BUILD_DEPENDENCIES} && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    python3 -m venv /opt/sopds && \
    pip3 install --ignore-installed --no-cache-dir --upgrade --disable-pip-version-check pip setuptools wheel && \
    pip3 install --ignore-installed --no-cache-dir -r requirements.txt -r requirements-override.txt && \
    find /opt/sopds \( -type d -a -name test -o -name tests \) -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) -exec rm -rvf '{}' \+ && \
    #apk del build-dependencies && \
    rm -rf /var/cache/apk/*
    find /opt/sopds \( -type d -a -name test -o -name tests \) -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) -exec rm -rvf '{}' \+

############################################################

FROM base AS runtime
ENV RUNTIME_DEPENDENCIES="libpq mariadb-connector-c libxml2 libxslt libffi libjpeg zlib xz-libs libbz2" \
ENV RUNTIME_DEPENDENCIES="sudo unzip" \
    OWNER_UID=1000 \
    OWNER_GID=1000
RUN set -ex && \
    apk --no-cache add ${RUNTIME_DEPENDENCIES} && \
    rm -rf /var/cache/apk/* && \
    ( addgroup -g $OWNER_GID sopds || echo sopds:x:$OWNER_GID:sopds | tee -a /etc/group ) && \
	( adduser -D -h /home/sopds -G sopds -u $OWNER_UID sopds || echo sopds:x:$OWNER_UID:$OWNER_GID:Linux User,,,:/home/sopds:/bin/ash | tee -a /etc/passwd ) && \
RUN apt-get update && \
    apt-get install --no-install-recommends -y ${RUNTIME_DEPENDENCIES} && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    ( addgroup --system --gid $OWNER_GID sopds || echo sopds:x:$OWNER_GID:sopds | tee -a /etc/group ) && \
	( adduser --system --home /home/sopds --ingroup sopds --uid $OWNER_UID sopds --shell /bin/sh || echo sopds:x:$OWNER_UID:$OWNER_GID:Linux User,,,:/home/sopds:/bin/sh | tee -a /etc/passwd ) && \
    chown -R sopds:sopds /home/sopds
COPY --from=builder /opt/sopds/ /opt/sopds/
COPY --from=git --chown=sopds:sopds /tmp/ /home/sopds/