栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用dockerfile运行容器时如何运行.sh文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用dockerfile运行容器时如何运行.sh文件

从纯粹的机械角度来看,引号引起了麻烦。当你说

RUN "sh test.sh"

它试图运行一个名为

sh test.sh
;它不会尝试将
sh
test.sh
作为参数运行。以下任何内容都将实际运行脚本

RUN ["sh", "test.sh"]RUN sh test.shRUN chmod +x test.sh; ./test.sh

在操作级别上,您将很难在服务器容器中运行该命令。最大的问题是服务器已经启动并运行后,您需要运行该命令。因此,您根本无法在Dockerfile中运行它(

RUN
命令中从未运行过任何服务)。容器运行的一个过程,你需要这个过程是Elasticsearch服务器本身,所以你不能这样做直接
ENTRYPOINT
CMD
两种。

最简单的路径是从主机运行此命令:

docker build -t my/elasticsearch .docker run -d --name my-elasticsearch -p 9200:9200 my/elasticsearchcurl http://localhost:9200  # is it alive?./test.sh

如果您具有Docker
Compose设置,则还可以从单独的容器中运行它,或者可以在启动应用程序容器时运行它。在运行中的

ENTRYPOINT
应用程序容器的脚本中有一些运行数据库迁移的良好示例,这基本上就是您要寻找的模式。

(从 理论上讲, 可以在入口点脚本中运行它。您必须启动服务器,等待其启动,运行脚本,停止服务器,然后最终

exec"$@"
运行
CMD
。)对于Elasticsearch而言,这比较棘手可能需要连接到同一Elasticsearch集群中的其他服务器,以免导致状态不同步。
mysql
对于非集群数据库服务器,官方Docker
Hub会这样做;请参阅其颇为复杂的入口点脚本以获取想法。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号