Запуск миграции на док-контейнере.Предположим, ваш файл компоновки выглядит так:
services:
# cointainer for django app
app:
build:
context: .
dockerfile: ./Dockerfile
depends_on:
- db
Используйте команду docker-compose run
Запустить команду вручную, имя контейнера приложения Django: app
docker-compose run app python manage.py migrate
# use if docker compose file name is other than `docker-compose.yml`
docker-compose -f production.yml run app python manage.py migrate
Использовать entrypoint.sh
Запускать автоматически каждый раз, когда вы up
контейнер.
Создайте имя файла entrypoint.sh в корневом каталоге проекта и скопируйте приведенную ниже командув нем.
python manage.py migrate --noinput
В DockerFile скопируйте entrypoint.sh из папки вашего проекта в контейнер app
.
COPY ./entrypoint.sh /entrypoint.sh
RUN sed -i 's/\r//' /entrypoint.sh
RUN chmod +x /entrypoint.sh
RUN chown app /entrypoint.sh
Теперь есть 2способы, которыми вы можете entrypoint.sh
запускать автоматически
Упоминание ENTRYPOINT
в самом DockerFile.
ENTRYPOINT ["/entrypoint.sh"]
Или вы можете упомянуть об этом в docker-composeфайл с ключевым словом command
под app
.
app:
build:
context: .
dockerfile: ./Dockerfile
depends_on:
- db
# this will run after cointainer `up`
command: /entrypoint.sh