如何在Docker中覆盖cmd?

时间:2019-06-13 13:57:05

标签: docker

我有dockerfile

CMD [ "/run/myfile.sh" ]

我建造了

docker build . -t myRepo/test/my-app:1.0.0

并运行它

docker run -it --rm myRepo/test/my-app:1.0.0 sh 

如果我想使用更多参数更改CMD 我该怎么办? 例如,我要创建文件夹

   command: ["/bin/sh"]
    args: [ "-c", "mkdir -p /myfolder/sub && mkdir -p /myfolder2/sub2"]

我尝试过

docker run -it --rm myRepo/test/my-app:1.0.0 sh [ "-c", "mkdir -p /myfolder/sub && mkdir -p /myfolder2/sub2"]

1 个答案:

答案 0 :(得分:1)

如果需要运行多个命令,请尝试使用entrypoint.sh

只需创建一个shell脚本,例如:

#!/bin/sh
mkdir -p /foo/bar
mkdir -p /foo2/bar2
#whatever

并编辑您的Dockerfile:

COPY entrypoint.sh /usr/local/bin/

CMD ["entrypoint.sh"]

但是我不确定是您的情况,用RUN命令而不是CMD创建目录更好:

FROM centos:7

RUN mkdir -p /foo/bar/ && mkdir -p /foo2/bar2/
RUN ...
COPY entrypoint.sh /usr/local/bin/
CMD ["entrypoint.sh"]