django - 我应该将 docker-compose 创建的 /data 文件夹包含到 Git 中吗?
问题描述
我是 docker 和 docker compose 的新手。老实说,我一般都是编程新手。
目前我正在学习使用 Python (Django) 和 JavaScript 进行 Web 开发的课程。其中一个项目暗示我们应该尝试使用 docker。
我使用 docker-compose 来启动 Django 服务器并将它们连接到 Postgres 数据库。此配置复制自Django 中的 Docker 文档
version: "3.9"
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/usr/src/app
ports:
- "8000:8000"
depends_on:
- db
这导致在根目录下创建了一个名为 /data 的文件夹。
我应该将此添加到存储库吗?
我什至应该将卷用于数据库吗?(课程教程中,数据库部分只包括:
services: db: image: postgres
解决方案
如果您查看 postgres 的docker 文档,/var/lib/postgresql/data
即使在 postgres 容器重新启动后,卷挂载也是为了保存 postgres 数据库数据。即,您可能已经完成的任何 DML/DDL 更改,即使在您的笔记本电脑重新启动时也会保留。
通常,由于可以通过运行迁移来恢复它,因此您需要将此 ( /data/db
) 添加到.gitignore
文件中。这也将确保您的任何共同开发人员在单击应用程序时可以自由地进行更改,并且不会与 postgres 可能写入此位置的任何二进制数据文件发生冲突。
推荐阅读
- javafx - 如何在javafx中设置弹出式场景鼠标透明
- javascript - Heroku Node.JS 网站 - href 属性在 HTML 中不起作用?
- flutter - 用 svg 颤动掩蔽图像
- forms - NativeScript - 如何让 RadForms 出现?
- azure-ad-b2c - Azure AD B2C 自定义策略的本地化显示 unicode 字符而不是实际字母
- c - 删除当前终端输入行
- python - 如何在python中从json中删除数字
- html - CSS 中的合法样式列表计数器
- c++ - 将内存分配返回值转换为 TYPE 数组
- python - 找到满足这两个条件的子集数?