Commit df6dd85b authored by Artem Baranovskyi's avatar Artem Baranovskyi
Browse files

Image build is optimized.

parent 38ed74fc
Pipeline #10887 failed with stages
in 2 minutes and 29 seconds
Showing with 39 additions and 32 deletions
+39 -32
...@@ -23,30 +23,38 @@ variables: ...@@ -23,30 +23,38 @@ variables:
DOCKER_CPUS: "2" DOCKER_CPUS: "2"
DOCKER_REGISTRY: docker.io DOCKER_REGISTRY: docker.io
before_script:
- mkdir -p ~/.docker
- echo $DOCKER_CONFIG_JSON | base64 -d > ~/.docker/config.json
- docker system prune -a -f --volumes || true
- apt-get update && apt-get install -y apt-utils && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/*
build: build:
stage: build stage: build
image: docker:20.10.16 image: docker:dind
services: services:
- name: docker:20.10.16-dind - name: docker:dind
command: ["--host=tcp://docker:2375", "--tls=false", "--storage-driver=overlay2", "--mtu=1500", "--data-root=/mnt/volume"] command: ["--tls=false", "--storage-driver=overlay2", "--mtu=1500", "--data-root=/mnt/volume"]
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
script: script:
- docker buildx create --use - 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 .
- docker push 22baar1mst/asyst-nlp-grader:latest - docker push 22baar1mst/asyst-nlp-grader:latest
only: cache:
- master key: build-cache
paths:
- /mnt/volume
timeout: 1h
deploy: deploy:
stage: deploy stage: deploy
image: docker:20.10.16 dependencies:
- build
services: services:
- name: docker:20.10.16-dind - name: docker:dind
command: ["--tls=false", "--storage-driver=overlay2", "--mtu=1500", "--data-root=/mnt/volume"] command: ["--tls=false", "--storage-driver=overlay2", "--mtu=1500", "--data-root=/mnt/volume"]
script: script:
- docker pull 22baar1mst/asyst-nlp-grader:latest - docker pull 22baar1mst/asyst-nlp-grader:latest
......
FROM debian:bullseye-slim as base FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential python3-venv curl && \ build-essential python3-venv && \
apt-get clean && \ apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc /usr/share/man /usr/share/locale rm -rf /var/lib/apt/lists/*
RUN python3 -m venv /opt/myenv RUN python3 -m venv /opt/myenv
ENV PATH="/opt/myenv/bin:$PATH" ENV PATH="/opt/myenv/bin:$PATH"
RUN pip install --no-cache-dir Flask && \ WORKDIR /app
pip install --no-cache-dir pytorch && \ COPY . /app
pip install --no-cache-dir matplotlib && \
pip install --no-cache-dir scikit-learn && \
pip install --no-cache-dir transformers && \
pip install --no-cache-dir pandas && \
pip install --no-cache-dir sentence_transformers && \
pip install --no-cache-dir --upgrade setuptools wheel \
rm -rf /root/.cache/pip
# Install dependencies in smaller steps
RUN pip install --no-cache-dir Flask matplotlib scikit-learn transformers pandas sentence_transformers
RUN pip install --no-cache-dir --upgrade setuptools wheel
FROM base as build # Final image
COPY --from=build /opt/myenv /opt/myenv FROM python:3.10-slim
WORKDIR /app COPY --from=builder /opt/myenv /opt/myenv
COPY . /app COPY --from=builder /app /app
ENV PATH="/opt/myenv/bin:$PATH"
RUN chown -R www-data:www-data /app && chmod -R 755 /app RUN chown -R www-data:www-data /app && chmod -R 755 /app
EXPOSE 5000 EXPOSE 5000
CMD ["/opt/myenv/bin/python", "/app/api.py"]
\ No newline at end of file CMD ["/opt/myenv/bin/python", "/app/api.py"]
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment