我正在尝试使用CMD在Dockerfile
中链接多个命令。
我有2个需要顺序运行的python脚本,然后对这2个脚本创建的文件进行S3同步。
我的docker命令:
CMD [ "python", "code/py_script1.py", "&&" ,"code/py_script2.py", "&&", "aws s3 sync /files s3://test_container/test/"]
第一个脚本成功运行,然后容器终止。我不确定如何链接命令。
我可以将这些命令作为命令行参数来传递。 有没有一种方法可以创建.sh文件,放置所有这些命令,然后简单地执行.sh文件,该文件将按顺序运行这些命令。
请提出是否还有更好,更有效的方法。谢谢。
答案 0 :(得分:1)
是的,您可以创建一个.sh
脚本并将其简单地在Docker中使用。假设您已经将Shell脚本与Dockerfile
放在同一文件夹中。将以下两行添加到Dockerfile
:
COPY path/to/your-shell-script.sh /your-shell-script.sh
CMD [ "/your-shell-script.sh" ]
要顺序运行命令,可以使用set -e
或&&
。我更喜欢set -e
。
#! /bin/sh
set -e
python code/py_script1.py
python code/py_script2.py
aws s3 sync /files s3://test_container/test/
&&
版本:
#! /bin/sh
python code/py_script1.py && \
python code/py_script2.py && \
aws s3 sync /files s3://test_container/test/