docker ENTRYPOINT 上的多个命令

新手上路,请多包涵

我正在尝试构建自定义 tcserver docker 映像。但是我在启动网络服务器和 tomcat 时遇到了一些问题。

据我了解,我应该使用 ENTRYPOINT 来运行我想要的命令。

问题是,是否可以使用 ENTRYPOINT 运行多个命令?

或者我应该创建一个小的 bash 脚本来启动所有操作?

基本上我想做的是:

 ENTRYPOINT /opt/pivotal/webserver/instance1/bin/httpdctl start && /opt/pivotal/webserver/instance2/bin/httpdctl start && /opt/pivotal/pivotal-tc-server-standard/standard-4.0.1.RELEASE/tcserver start instance1 -i /opt/pivotal/pivotal-tc-server-standard && /opt/pivotal/pivotal-tc-server-standard/standard-4.0.1.RELEASE/tcserver start instance2 -i /opt/pivotal/pivotal-tc-server-standard

但我不知道这是否是一个好的做法,或者这是否会奏效。

原文由 radicaled 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3k
2 个回答

如果您想在入口点运行许多命令,最好的办法是创建一个 bash 文件。例如 commands.sh 像这样

#!/bin/bash
mkdir /root/.ssh
echo "Something"
cd tmp
ls
...

然后,在您的 DockerFile 中,将入口点设置为 commands.sh 文件(执行并运行其中的所有命令)

 COPY commands.sh /scripts/commands.sh
RUN ["chmod", "+x", "/scripts/commands.sh"]
ENTRYPOINT ["/scripts/commands.sh"]

之后,每次启动容器时, commands.sh 将执行并运行您需要的所有命令。你可以看看这里 https://github.com/dangminhtruong/drone-chatwork

原文由 Truong Dang 发布,翻译遵循 CC BY-SA 4.0 许可协议

你可以使用这样的东西:

ENTRYPOINT ["/bin/sh", "-c" , "<command A> && <command B> && <command C>"]

原文由 Latif 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题