Python collectstatic commad не запускается в Docker compose и gitlab

Я пытаюсь запустить python manage.py collectstatic в docker, но ничего не получается, моему проекту python не хватает некоторых иконок, и эта команда решит проблему, но я не могу понять, где разместить команду, я прочитал несколько вопросов здесь, но не повезло.

Ниже представлен мой docker-compose.ci.stag.yml файл:

version: "3.7"

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile.staging
      cache_from:
        - guiostagingregisrty.azurecr.io/guio-tag:tag
    image: guiostagingregisrty.azurecr.io/guio-tag:tag
    expose:
      - 7000
    env_file: .env

Тогда мой docker-compose.staging.yml файл :

version: '3.5'
# sudo docker login -p <password> -u <username>
services:
  api:
    container_name: api
    image: guiostagingregisrty.azurecr.io/guio-tag:tag
    ports:
      - 7000:7000
    restart: unless-stopped
    env_file:
      - .env
    networks:
      - app-network
  
  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /root/.docker/config.json:/config.json
    command: --interval 30
    environment: 
      - WATCHTOWER_CLEANUP=true
    networks:
      - app-network

  nginx-proxy:
    container_name: nginx-proxy
    image: jwilder/nginx-proxy:0.9
    restart: always
    ports:
      - 443:443
      - 90:90
    volumes:
      - certs:/etc/nginx/certs
      - html:/usr/share/nginx/html
      - vhost:/etc/nginx/vhost.d
      - /var/run/docker.sock:/tmp/docker.sock:ro
    depends_on:
      - api
    networks:
      - app-network

  nginx-proxy-letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    env_file:
      - .env.prod.proxy-companion
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - certs:/etc/nginx/certs
      - html:/usr/share/nginx/html
      - vhost:/etc/nginx/vhost.d
      - acme:/etc/acme.sh
    depends_on:
      - nginx-proxy
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  certs:
  html:
  vhost:
  acme:

тогда мой Docker.staging файл :

# ./django-docker/app/Dockerfile
FROM python:3.7.5-buster

# set work directory
WORKDIR /opt/app

# Add current directory code to working directory
ADD . /opt/app/

# set environment variables

# Prevents Python from writing pyc files to disc.
ENV PYTHONDONTWRITEBYTECODE 1
# Prevents Python from buffering stdout and stderr.
ENV PYTHONUNBUFFERED 1

# Copy firebase file
# COPY afro-mobile-test-firebase-adminsdk-cspoa.json

# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    tzdata \
    python3-setuptools \
    python3-pip \
    python3-dev \
    python3-venv \
    git \
    && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# install environment dependencies
RUN pip3 install --upgrade pip

# Install project dependencies
RUN pip3 install -r requirements.txt

EXPOSE 7000

# copy project
COPY . /opt/app/


CMD ["bash", "start-app.sh"]

тогда мой start-app.sh файл :

#Run migrations
python manage.py migrate

#run tests
# python manage.py test

# run collect statics
python manage.py collectstatic

echo 'COLLECT STAIIC DONE ********'
 
echo $PORT
# Start server
# python manage.py runserver 0.0.0.0:$PORT
gunicorn server.wsgi:application --bind 0.0.0.0:$PORT

Я использую gitlab ci для автоматизации конвейера, так что вот мой gitlab.yml сценарий сборки:

# Build and Deploy to Azure.
build-dev:
  stage: build
  before_script:
    - export IMAGE=$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME
  script:
    - apk add --no-cache bash
    - chmod +x ./setup_env.sh
    - bash ./setup_env.sh
    - docker login $AZ_REGISTRY_IMAGE -u $AZ_USERNAME_REGISTRY -p $AZ_PASSWORD_REGISTRY
    - docker pull $AZ_REGISTRY_IMAGE/guio-tag:tag || true
    - docker-compose -f docker-compose.ci.stag.yml build
    - docker push $AZ_REGISTRY_IMAGE/guio-tag:tag
  only:
    - develop
    - test-branch

Сборка выполняется успешно, но я уверен, что python manage.py collectstatic не выполняется, как лучше это сделать?

Вернуться на верх