docker ENTRYPOINT上的多个命令

时间:2019-01-10 02:08:40

标签: docker dockerfile

我正在尝试构建自定义的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

但是我不知道这是个好习惯还是行得通。

3 个答案:

答案 0 :(得分:15)

你可以这样使用:

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

答案 1 :(得分:5)

以防您想在入口点运行许多命令。最好的主意是创建一个bash文件。例如bash文件可能commands.sh是这样的

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

然后在您的DockerFile中。设置入口点是commands.sh文件(用于在其中执行和运行所有Mand)

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

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

看看

答案 2 :(得分:0)

您可以使用NPM concurrently

例如

ENTRYPOINT ["NPX","concurrently","command1","command2"]

它将并行运行它们。