【问题标题】:Docker-Compose Workflow, docker-compose down?Docker-Compose Workflow, docker-compose down?
【发布时间】:2017-04-05 03:41:31
【问题描述】:

我正在学习 docker 有一个使用 django/postgresql 的工作 docker-compose 实现。一切都按预期工作。我的问题是什么被认为是数据持久性和数据风险的“最佳实践”。

这是我完整的 docker-compose.yml:

version: '2'
services:
  db:
    image: postgres
    volumes:
      - postgresql:/var/lib/postgresql
    ports:
      - "5432:5432"
    env_file: .env
  web:
    build: .
    command: python run_server.py
    volumes:
      - .:/project
    ports:
      - "8000:8000"
    depends_on:
      - db
volumes:
  postgresql:

run_server.py 脚本只是检查以确保可以连接到数据库,然后运行python manage.py runserver

所以如果我停止我的容器并重新启动它们,数据仍然存在。我担心的是docker-compose down 命令。此命令删除数据库。这是故意的吗?运行它似乎很容易并且不小心造成很大的损坏。

有没有办法让数据库在这些容器被移除的情况下仍然存在?

【问题讨论】:

    标签: django postgresql docker-compose


    【解决方案1】:

    我按照本指南将 Django 与 Docker 集成。

    https://docs.docker.com/compose/django/

    让数据“持久化”的方法是在Docker镜像外设置数据库,让APP通过settings.py连接数据库

    通过这个技巧,当容器关闭时,数据库仍然存在,因为在同一个容器之外。

    另一个技巧是在另一个 docker 容器中设置数据库

    【讨论】: