这是我的docker-compose.yml
:
version: "3.9"
services:
app:
image: company/image
ports:
- "5000:5000"
working_dir: /path/to/git/repository
command: sh -c "git reset --hard origin/main"
command: git reset --hard origin/main
command: cp /src/module/menu.json /src/menu.json
command: sh -c "cp /src/module/menu.json /src/menu.json"
command: dummy
command: sh -c "dummy"
volumes:
- /path/on/local:/path/on/docker
command: sh -c "echo 'hello from inside docker'"
当我运行docker-compose up
时,我只看到这个:
正在重新创建模块_app_1。。。完成
附加到module_app_1
app_1|来自docker内部的你好
module_app_1退出,代码为0
我可以使用docker-compose exec app
检查容器,并且我可以看到cp
和git
命令都没有执行,并且我在输出中也没有看到任何错误。
此外,dummy
显然是一个在此容器上不存在的命令。为什么我没有看到任何错误?
我该怎么办?
没有执行
cp
和git
命令,我在输出中也没有看到任何错误。
是的,因为您在docker-compose.yml
中添加了多个command:
行,而此属性旨在指定单个命令(回想一下,Docker容器仅用于运行一个程序(。
因此,您只能看到最后一行command:
的结果,它覆盖了前面的结果:
app_1|来自docker 内部的你好
不过,您可以执行以下操作来解决您的用例(即使它可能不是很习惯(:
version: "3.9"
services:
app:
image: company/image
ports:
- "5000:5000"
working_dir: /path/to/git/repository
command: |
sh -e -c "
git reset --hard origin/main
cp /src/module/menu.json /src/menu.json
echo 'hello from inside docker'
"
volumes:
- /path/on/local:/path/on/docker
这个答案特别依赖于所谓的YAML块样式,如果其中一个shell命令失败,建议立即退出shell选项-e
。