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