如何将更改保存到docker

时间:2019-04-09 14:53:11

标签: django docker

我目前有这张图片,我要像这样

docker-compose up -d

然后,我运行一堆django脚本来使图像更新为python manage.py migrate,然后是python manage.py createsu,最后是python manage.py runserver

但是,每次我通过执行docker-compose down关闭图像时,不会应用所有更改。

我该怎么做才能保存所有更改,并下次使用已应用的更改运行同一图像?

3 个答案:

答案 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

您在数据库中所做的所有更改都将在此处。