mysql - docker mysql-container 卷映射到项目中的文件夹 - 安全吗?
问题描述
我想从我现在发现 docker 几天开始。我已经设置了一个带有堆栈的 docker-compose.yml,我在本地机器上运行该堆栈进行开发。在我的 docker-compose.yml 中,我还创建了一个带有卷的 mysql 容器,该卷将我的项目中的文件夹连接到容器中的 mysql 文件夹。
项目结构:
Project
|-- project folder 1
|-- project folder 2
|-- project folder 3
|-- docker
| `-- mysql
|-- file1
|-- file2
`-- docker-compose.yml
容器:
mysql:
image: mysql:5.7
ports:
- "3306:3306"
restart: always
environment:
MYSQL_DATABASE: xxx
MYSQL_USER: xxx
MYSQL_PASSWORD: xxx
MYSQL_ROOT_PASSWORD: xxx
networks:
- network-woo
volumes:
- ./docker/mysql:/var/lib/mysql
我将这个项目推送到 git。我肩上一个叫做“新手”的魔鬼告诉我“太好了!这样你每次推送时都将数据库保存在 git repo 中”。虽然有一个叫“gutfeeling”的天使告诉我要小心!这可能会出错,但我不确定是什么。
我的问题是这是否是一种安全的方法,以及是否有人能预见到这种方法将来会出现任何问题。我知道,如果我将这个项目放在实时服务器上,并将 git repo 拉到该服务器上,它将用本地数据库中所做的更改覆盖数据库,仍然在为那个解决方案工作。
提前致谢,
布拉姆
解决方案
我想这取决于你的项目。我在 WordPress 世界中,所以我将以此为例。
如果您正在开发一个多人使用的主题或插件,那么只将主题或插件放在版本控制中是有意义的。
在这种情况下,我将使用 wp-env(一个启动几个 docker 容器的脚本,并为我设置标准的 WordPress 环境),并且只将链接到容器的主题和/或插件文件夹放入版本控制中. 在此处实际对生成的 WP 源或 DB 文件进行版本化是没有意义的,因为它们可以简单地再次使用 wp-env 命令重新生成。
另一方面,如果您正在为客户开发一个完整的网站,这取决于插件和一些设置的组合,以及您构建的自定义主题,甚至可能是您为该客户开发的一个或两个插件,我'已经了解到我想将我的整个开发环境放在一个 git repo 中,如下所示:
-- docker-compose.yml(启动 wp 容器和 mysql 容器) -- data(映射到 mysql 容器的原始数据库文件) -- wordpress(WordPress 项目的 Web 根目录,映射到 wp 容器) -- .git
我认为这是有道理的,因为我可以转到另一台计算机,拉取存储库,运行 docker-compose up,并且我的所有内容都完全处于我上次在另一台计算机上推送项目时离开它的状态.
当然,如果您与其他人一起工作,这可能需要一些额外的协调。
此外,正如一些人所指出的,你不能简单地去推动你的 git repo 生存。相反,您可以编写一个仅将相关文件推送到实时环境的脚本。
推荐阅读
- jenkins - 如何发布来自 Jenkins 的最新 HTML 报告?
- google-sheets - 当单元格是URL时使用importjson,Gsheets中的JSON格式
- python - 如何使两帧动画工作pygame
- angular - Angular FormControl 值在服务内部设置为 null
- python-3.x - VS 代码不会在终端 Python 中打印完整的字符串
- javascript - 多个网络工作者绘制画布图像数据
- r - 将闪亮页面导出为 PDF
- node.js - 如果启用了统计信息,消费者将停止 - node-rdkafka
- rest - SOAP UI - 在 rest api 的请求正文中附加一个多部分文件
- c# - CefSharp 检测 webm 视频结束