小编Mor*_*sen的帖子

如何在构建时创建填充的MySQL Docker镜像

我想创建一个已填充数据的MySQL Docker镜像.

我想创建这样的3层:

        |---------------------|---------------------|
Layer 3 | Customer 1 Database | Customer 2 Database |
        |---------------------|---------------------|
Layer 2 |   Database image with tables but no data  |
        |-------------------------------------------|
Layer 1 |                mysql:5.6.26               |
        |-------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

我现在的问题是如何为第2层和第3层创建正确的Dockerfile?我的empty_with_tables.sql文件被加载到第2层,customer1.sql和customer2.sql被加载到第3层的两个图像中.我读了一些关于将SQL文件放入'/docker-entrypoint-initdb.d'的内容.但这会导致数据在第一次启动图像时出现.这不是我想要的.我希望数据在图像中准备就绪(例如,在测试中可以快速获得).

我可以启动mysql映像,从命令行加载数据并执行'commit'但这不可重现,需要在SQL文件中的数据更改时再次执行此操作.

如何才能做到这一点?

最好的祝福,

  • 莫滕格林赫曼森

mysql database docker

19
推荐指数
5
解决办法
2万
查看次数

了解docker diff

我不明白'docker diff'的输出.请参阅下文了解详情.这是我的Docker版本:

$ docker version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d
OS/Arch (server): linux/amd64
Run Code Online (Sandbox Code Playgroud)

我在/ var/jenkins_home中有一个带有以下内容的Jenkins图像:

$ docker run -it --rm jenkins ls /var/jenkins_home
init.groovy.d
Run Code Online (Sandbox Code Playgroud)

然后我启动Jenkins填充Jenkins数据目录:

$ docker run --name app -d jenkins
Run Code Online (Sandbox Code Playgroud)

在Jenkins启动后,我调用容器列出文件:

$ docker exec app ls /var/jenkins_home
Download metadata.log
hudson.model.UpdateCenter.xml
identity.key.enc
init.groovy.d
jobs
nodeMonitors.xml
nodes
plugins
secret.key
secret.key.not-so-secret
secrets
updates …
Run Code Online (Sandbox Code Playgroud)

diff docker

4
推荐指数
1
解决办法
598
查看次数

标签 统计

docker ×2

database ×1

diff ×1

mysql ×1