mysql - 带有数据库的 Dockerfile 卷 - 将卷用于可变的用户可维护部分

标签 mysql docker volume dockerfile

这取自docker官网Dockerfile best practices ..

VOLUME

The VOLUME instruction should be used to expose any database storage area, configuration storage, or files/folders created by your docker container. You are strongly encouraged to use VOLUME for any mutable and/or user-serviceable parts of your image.

对图像的任何可变和用户可维护部分使用卷是什么意思?有时我应该/不应该为数据库使用卷吗?如果是,为什么?这是您将数据库的实际数据内容与 docker 容器分开安装的地方吗?

最佳答案

不是一个完整的答案,但我找到了一个可能有帮助的例子。摘自 Oskar Hane 的“使用 Docker 构建您自己的 PAAS”一书,他在其中创建了一个仅用于为其他容器(例如 MySQL 容器)托管文件的容器:

Dockerfile 有一个 VOLUME 指令,您可以在其中定义在使用 --volumes-from 属性添加此数据卷容器时向其他容器公开哪些目录。在我们的数据卷容器中,我们首先需要为 MySQL 数据添加一个目录。让我们看一下我们将使用的 MySQL 镜像内部,看看哪个目录用于数据存储,并将该目录公开给我们的数据卷容器,以便我们可以拥有它:

RUN mkdir –p /var/lib/mysql 
VOLUME ["/var/lib/mysql"] 

关于mysql - 带有数据库的 Dockerfile 卷 - 将卷用于可变的用户可维护部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35522084/

相关文章:

sql group by 计数问题

mysql - SQLAlchemy 和 MySQL 中一对多关系中列的唯一约束

django - Django和Docker:管理生产和开发环境之间的依赖关系

java - 使用JLGui更改系统音量

Android - 使用硬件音量按钮控制 SoundPool 的音量?

docker - Kubernetes Volumes/PV与Docker命名卷

MYSQL - 在同一列中选择 2 个值

php - 用 php 分页?

docker - Dockerfile:找不到命令

ssl - Docker 私有(private)注册表 | TLS 证书问题