docker compose上没有执行cp或git命令



这是我的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检查容器,并且我可以看到cpgit命令都没有执行,并且我在输出中也没有看到任何错误。

此外,dummy显然是一个在此容器上不存在的命令。为什么我没有看到任何错误?

我该怎么办?

没有执行cpgit命令,我在输出中也没有看到任何错误。

是的,因为您在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

相关内容

  • 没有找到相关文章

最新更新