我目前有这张图片,我要像这样
docker-compose up -d
然后,我运行一堆django脚本来使图像更新为python manage.py migrate
,然后是python manage.py createsu
,最后是python manage.py runserver
。
但是,每次我通过执行docker-compose down
关闭图像时,不会应用所有更改。
我该怎么做才能保存所有更改,并下次使用已应用的更改运行同一图像?
答案 0 :(得分:1)
我将假设您在容器中使用mysql(或其他)数据库 ,而不是在外部卷上-如果是这种情况,则无需这样做。
您将需要使用不在容器中运行的数据库(即在单独的服务器上),或者创建在docker image外部但仍在镜像中运行数据库软件但使用外部卷的卷存储数据。
答案 1 :(得分:1)
让我看看我的docker-compose文件(django):
version: "3"
services:
education:
image: mysql/mysql-server:5.7
ports:
- 3308:3306
environment:
- MYSQL_USER=cuong
- MYSQL_PASSWORD=cuong
- MYSQL_DATABASE=education
volumes:
- .:/education/db
esmweb:
links:
- education
build:
context: .
dockerfile: Dockerfile
volumes:
- ./:/education/
image: django
stdin_open: true
tty: true
ports:
- 8080:8080
并查看卷。它作为缓存。当您的代码更改时,它将直接更改。
当您要删除容器的数据时,可以执行以下操作:docker-compose down
希望它能对您有所帮助。
您可以阅读文档以了解“卷”:volumes
答案 2 :(得分:1)
经过一番交谈,我发现自己的感觉对我来说是最好的。
docker stop $(docker ps -a -q)
要重新激活图像,只需执行
docker-compose up -d
您在数据库中所做的所有更改都将在此处。