【发布时间】: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