首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建无状态的mysql docker容器

问如何创建无状态的mysql docker容器
EN

Stack Overflow用户
提问于 2019-04-01 14:02:33
回答 2查看 404关注 0票数 0

我想制作一个mysql docker镜像,在构建过程中导入一些初始数据。

之后,当在容器中使用时,容器保持无状态,这意味着在容器运行时添加的数据不会再次销毁/启动容器,但初始数据仍在那里。

这个是可能的吗?我如何设置这样的镜像和容器?

EN

回答 2

Stack Overflow用户

发布于 2019-04-01 14:21:31

我建议在SQL脚本中根据需要创建MySQL表,或者直接在本地MySQL实例中创建并将其导出到文件中。

有了这个文件,创建一个构建在MySQL容器上的Dockerfile文件。在此基础上添加另一个将SQL脚本注入数据库的入口点脚本。

你不需要写任何关于挂载卷的东西。您可能需要数据库的数据卷,或者配置MySQL以将所有内容都保存在内存中。

对于添加的“无状态”,您可能还想删除SQL脚本中的所有表。

票数 0
EN

Stack Overflow用户

发布于 2019-04-01 15:10:52

我认为你需要的是一个多阶段的构建:

代码语言:javascript
复制
FROM mysql:5.7 as builder

# needed for intialization
ENV MYSQL_ROOT_PASSWORD=somepassword

ADD initialize.aql /docker-entrypoint-initdb.d/

# That file does the DB initialization but also runs mysql daemon, by removing the last line it will only init
RUN ["sed", "-i", "s/exec \"$@\"/echo \"not running $@\"/", "/usr/local/bin/docker-entrypoint.sh"]
RUN ["/usr/local/bin/docker-entrypoint.sh", "mysqld", "--datadir", "/initialized-db"]

FROM mysql:5.7

COPY --from=builder /initialized-db /var/lib/mysql

您可以将初始化脚本放在initialize.sql中(或者选择不同的方式来初始化数据库)。

得到的图像是一个已经初始化的数据库。你可以使用它,然后随心所欲地扔掉它。

您还可以使用此过程为不同的用例创建不同的镜像(以不同的方式标记它们)。

希望这能回答你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55448905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档