docker - 如何在 Dockerfile 中运行进程并在调用下一个命令时保持运行
问题描述
我想用 cassandra 创建一个 docker 映像,其中已经有一些键空间/表/数据。该镜像是测试所必需的,我们需要的数据非常多,所以我不想将它加载到 docker-entrypoint.sh 中,这样容器就会快速启动。
这是我简化的 Dockerfile,但显然它不起作用:
FROM cassandra:3.11
COPY cql cql
RUN cqlsh -f /cql/001_create_keyspace.cql
正如我刚刚了解到的,当我尝试发出RUN cqlsh
.
有什么方法可以运行它,加载数据,然后停止 cassandra?或者有没有其他方法可以使用已经加载的数据创建 cassandra 图像?
解决方案
您可以将数据导入正在运行的容器中,提交该容器,从而创建一个新图像。
推荐阅读
- python - Pyro4:在远程子对象上调用方法而不尝试返回子对象
- javascript - 如果我使用两个“if”语句而不仅仅是一个“if/else”语句,为什么二进制搜索算法不起作用?
- textures - 如何正确可视化 A-Frame 中的 AO 地图贡献
- python - 在 C++ 中实现 python np.fromstring()
- google-sheets - 创建 ImportXML 以从任何内容创建者的视频页面获取最后 30 个视频的单个 YouTube 视频视图。可能的?
- rest - WebLogic 12c JAX-RS 和 JSON 编组
- promql - 如何编写 PromQL 单元测试来检查警报是否未触发?
- r - 在 R 中使用 cor.test 函数
- javafx - JavaFX - 如何使用窗口关闭/最小化按钮在后台运行桌面应用程序并从隐藏图标中“重新打开或完全关闭”
- javascript - Angular 6:键入时更改输入文本