Django/Docker: миграция не обнаружена и не применена

Стек: Django/Docker/Docker-compose/Postgresql (не в контейнере)

>

Я сделал модификации, включая обновления моделей, сохранил и отправил в свой удаленный репозиторий Gitlab.

Затем я вытащил модификацию из моего репозитория на Gitlab на сервер preprod, и я вижу, что у меня есть модифицированная версия на сервере.

Но когда я останавливаю и перезапускаю контейнер, он не обнаруживает никаких изменений и не применяет миграции. Я также проверил, что файл entrypoint.preprod.sh содержит команды makemigrations и migrate.

Я пробовал восстановить его с помощью docker-compose build затем запустить его, но он больше не работает.

Я пытался подключиться непосредственно к моему контейнеру (docker exec -it web sh), но makemigrations не обнаруживаются и миграции, следовательно, не применяются.

Я должно быть что-то упускаю, но что?

docker-compose-preprod.yml

version: '3.7'

services:
    web:
        restart: always
        container_name: virage_web
        build: 
            context: ./app
            dockerfile: Dockerfile.preprod
        restart: always
        command: gunicorn core.wsgi:application --bind 0.0.0.0:8000
        volumes:
            - app_volume:/usr/src/app
            - static_volume:/usr/src/app/static
            - media_volume:/usr/src/app/media
        expose:
            - 8000
        env_file:
            - ./.env.preprod
        entrypoint: [ "/usr/src/app/entrypoint.preprod.sh" ]
        depends_on:
            - redis
        healthcheck:
            test: ["CMD", "curl", "-f", "http://localhost:8000/"]
            interval: 30s
            timeout: 10s
            retries: 50
            
    redis:
        container_name: virage_redis
        image: "redis:alpine"

    celery:
        container_name: virage_celery
        build: 
            context: ./app
            dockerfile: Dockerfile.preprod
        command: celery -A core worker -l info
        volumes:
            - app_volume:/usr/src/app
        env_file:
            - ./.env.preprod
        depends_on:
            - web
            - redis

    celery-beat:
        container_name: virage_celery-beat
        build: 
            context: ./app
            dockerfile: Dockerfile.preprod
        command: celery -A core beat -l info
        volumes:
            - app_volume:/usr/src/app
        env_file:
            - ./.env.preprod
        depends_on:
            - web
            - redis           
  
    nginx:
        container_name: virage_nginx
        build: ./nginx
        restart: always
        volumes:
            - static_volume:/usr/src/app/static
            - media_volume:/usr/src/app/media
        ports:
            - 1350:80
        depends_on:
            - web


volumes:
    static_volume:
    media_volume:
    app_volume:

Dockerfile.preprod

# Pull the official base image
FROM python:3.8.3-alpine

# Set a work directory
WORKDIR /usr/src/app

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install psycopg2 dependencies
RUN apk update && apk add postgresql-dev gcc g++ python3-dev musl-dev

RUN apk --update add libxml2-dev libxslt-dev libffi-dev musl-dev libgcc openssl-dev curl postgresql-client
RUN apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev nano
RUN pip3 install psycopg2 psycopg2-binary

# install xgettext for i18n
RUN apk add gettext

# Install dependencies
COPY requirements/ requirements/
RUN pip install --upgrade pip && pip install -r requirements/preprod.txt

# Copy the entrypoint.sh file
COPY entrypoint.preprod.sh .

# Copy the initdata sql file
COPY initdata.preprod.sql .

# Copy the project's files
COPY . .
RUN chmod +x entrypoint.preprod.sh

entrypoint.preprod.sh

#!/bin/sh

if [ "$DATABASE" = "postgres" ]
then
    echo "Waiting for postgres..."

    while ! nc -z $SQL_HOST $SQL_PORT; do
      sleep 0.1
    done

    echo "PostgreSQL started"
fi

# python manage.py flush --no-input
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic --no-input
python manage.py makemessages -l fr
python manage.py compilemessages



exec "$@"

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