From 575fa1b26dbd2dd89b88dea558095ea2c9a0d630 Mon Sep 17 00:00:00 2001 From: Artem Baranovskyi <artem.baranovsky1980@gmail.com> Date: Sat, 11 Jan 2025 22:30:28 +0200 Subject: [PATCH] Image build is optimized. --- .gitlab-ci.yml | 57 ++++++++++++++++++++++++++--------------- flask_ml_api/Dockerfile | 3 ++- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a29696e..5c45ee7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,27 +23,45 @@ variables: DOCKER_CPUS: "2" DOCKER_REGISTRY: docker.io +before_script: + - mkdir -p ~/.docker + - echo $DOCKER_CONFIG_JSON | base64 -d > ~/.docker/config.json + - mkdir -p /mnt/volume + - mount /dev/vdb /mnt/volume || echo "Failed to mount /dev/vdb" + - export DOCKER_TMPDIR=/mnt/volume + - docker system prune -a -f --volumes || true + - docker container prune -f || true + - docker network prune -f || true + - docker image prune -a -f || true + - docker builder prune -f || true + - apt-get update + - apt-get install -y apt-utils + - apt-get clean + - rm -rf /var/lib/apt/lists/* + - rm -rf /tmp/* + - journalctl --vacuum-time=1s + +after_script: + - docker system prune -a -f --volumes || true + - docker container prune -f || true + - docker network prune -f || true + - docker image prune -a -f || true + - docker builder prune -f || true + build: stage: build - image: docker:dind + image: docker:20.10.16 services: - - name: docker:dind - command: ["--tls=false", "--storage-driver=overlay2", "--mtu=1500", "--data-root=/mnt/volume"] -# command: [ "--host=tcp://0.0.0.0:2375", "--host=unix:///var/run/docker.sock" ] + - name: docker:20.10.16-dind + command: ["--host=tcp://docker:2375", "--tls=false", "--storage-driver=overlay2", "--mtu=1500", "--data-root=/mnt/volume"] + volumes: + - /var/run/docker.sock:/var/run/docker.sock before_script: - - mkdir -p ~/.docker - - echo $DOCKER_CONFIG_JSON | base64 -d > ~/.docker/config.json - - mkdir -p /mnt/volume - - mount /dev/vdb /mnt/volume || echo "Failed to mount /dev/vdb" - - export DOCKER_TMPDIR=/mnt/volume - - docker system prune -a -f --volumes || true - - df -h - after_script: - - docker system prune -a -f - - docker volume prune -f + - docker info + - docker buildx create --use + - docker buildx inspect --builder script: -# - docker build --cache-from=asyst-nlp-grader --no-cache --progress=plain -t asyst-nlp-grader -f flask_ml_api/Dockerfile . -# - docker buildx build --cache-from=type=registry,ref=22baar1mst/asyst-nlp-grader --no-cache --progress=plain -t 22baar1mst/asyst-nlp-grader:latest -f flask_ml_api/Dockerfile --push . + - docker buildx build --cache-from=type=registry,ref=22baar1mst/asyst-nlp-grader --no-cache --progress=plain -t 22baar1mst/asyst-nlp-grader:latest -f flask_ml_api/Dockerfile . - docker push 22baar1mst/asyst-nlp-grader:latest cache: key: build-cache @@ -53,13 +71,12 @@ build: deploy: stage: deploy - dependencies: - - build + image: docker:20.10.16 services: - - name: docker:dind + - name: docker:20.10.16-dind command: ["--tls=false", "--storage-driver=overlay2", "--mtu=1500", "--data-root=/mnt/volume"] script: - docker pull 22baar1mst/asyst-nlp-grader:latest - docker run -d 22baar1mst/asyst-nlp-grader:latest only: - - master \ No newline at end of file + - master diff --git a/flask_ml_api/Dockerfile b/flask_ml_api/Dockerfile index d6fa706..c7cdd3b 100755 --- a/flask_ml_api/Dockerfile +++ b/flask_ml_api/Dockerfile @@ -14,7 +14,8 @@ COPY . /app RUN pip install --no-cache-dir Flask matplotlib scikit-learn transformers pandas sentence_transformers RUN pip install --no-cache-dir --upgrade setuptools wheel -FROM python:3.10-slim AS final + +FROM python:3.10-slim COPY --from=builder /opt/myenv /opt/myenv COPY --from=builder /app /app -- GitLab