【问题标题】:Django docker-compose after restart requires migration again重启后的 Django docker-compose 需要再次迁移
【发布时间】:2018-05-30 00:29:46
【问题描述】:

我制作了这个单元文件。

[Unit]
Description=myservice
Requires=docker.service
After=docker.service

[Service]
Restart=always

# Remove old containers, images and volumes
ExecStartPre=/usr/local/bin/docker-compose -f my.yml down -v
ExecStartPre=/usr/local/bin/docker-compose -f my.yml rm -v
ExecStartPre=-/bin/bash -c 'docker volume rm $(docker volume ls -q)'
ExecStartPre=-/bin/bash -c 'docker rmi $(docker images | grep "<none>" | awk \'{print $3}\')'
ExecStartPre=-/bin/bash -c 'docker rm -v $(docker ps -aq)'

# Compose up
ExecStart=/usr/local/bin/docker-compose -f my.yml up

# Compose down, remove containers and volumes
ExecStop=/usr/local/bin/docker-compose -f my.yml down -v

[Install]
WantedBy=multi-user.target

在运行此文件之前,我会像这样创建迁移:

docker-compose -f my.yml run --rm django python manage.py migrate

但是,重新启动操作系统后,我需要重新启动迁移,因为它们没有被检测到。 有什么问题?

【问题讨论】:

  • 你没有提到你保存数据库的位置,但发布的服务文件中的这些命令将删除所有 docker 容器 (docker rm -v $(docker ps -aq)) 和当前在你的机器上的所有 docker 卷 (docker volume rm $(docker volume ls -q))。如果您的数据库是在已启动的容器中或在关联的卷上(而不是在实际映像中)创建的,那么每次启动或停止服务时,您似乎都在清除所有内容。

标签: python django docker docker-compose cookiecutter-django


【解决方案1】:

经过实验,我在这里制作了这样一个单元文件,它应该可以正常工作。

[Unit]
Description=myservice
Requires=docker.service
After=docker.service

[Service]
Restart=always

# Compose down
ExecStartPre=/usr/local/bin/docker-compose -f my.yml down

# Compose up
ExecStart=/usr/local/bin/docker-compose -f my.yml up

# Compose down
ExecStop=/usr/local/bin/docker-compose -f my.yml down

[Install]
WantedBy=multi-user.target

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    相关资源
    最近更新 更多