在不覆盖现有命令的情况下向CMD添加新命令

时间:2018-06-30 12:49:11

标签: docker

我想使用现有的docker映像并添加新命令,而不覆盖cmd中的命令。

Dockerfile

FROM telegrammessenger/proxy

COPY mtproto_stats .

CMD [ "/bin/sh", "-c", "/bin/bash /run.sh", "/bin/bash ./mtproto_stats" ]

我在这里尝试执行我复制到容器CMD的程序[“ / bin / sh”,“-c”,“ / bin / bash /run.sh"、"./mtproto_stats"]

此命令"/bin/sh", "-c", "/bin/bash /run.sh"是我在运行容器上使用的docker inspect

我的程序应始终与容器一起运行并一直工作,我正在尝试使用"./mtproto_stats & disown",但无济于事

1 个答案:

答案 0 :(得分:0)

  

此命令"/bin/sh", "-c", "/bin/bash /run.sh"是我在运行的容器上使用docker inspect

"/bin/sh", "-c"是默认的ENTRYPOINT"/bin/bash /run.sh"CMD

对于您来说,应该使用CMD的外壳形式:

FROM telegrammessenger/proxy

COPY mtproto_stats .
COPY wrapper.sh /wrapper.sh
CMD exec /wrapper.sh

使用wrapper.sh:

#!/bin/bash
exec /path/to/mtproto_stats & disown
exec /run.sh

我将run.sh放在最后,因为它应该是使容器保持活动状态的主要过程。