首页 > 解决方案 > 从 Docker 容器运行 docker-compose

问题描述

我在已安装的容器Jenkins内运行。我可以从此容器调用以在主机上运行服务吗?我尝试从容器中执行安装脚本,但它一直说Dockerdocker.sockdocker-compose

“没有这样的文件或目录”。

docker exec jenkins curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

docker exec jenkins chmod +x /usr/local/bin/docker-compose

标签: dockerjenkinsdocker-compose

解决方案


这是可以实现的,但要做到这一点很棘手。

您需要使用docker将 docker-compose.yml 文件在 docker 主机上的路径安装到容器中完全相同的位置。

因此如果 docker-compose.yml 文件位置/home/leonid/workspace/project1/docker-compose.yml在 docker 主机上,则需要-v /home/leonid/workspace/project1/:/home/leonid/workspace/project1/为 jenkins 容器添加卷。

然后,在您的 Jenkins 工作中:

cd /home/leonid/workspace/project1/
docker-compose up -d

这是为什么?

请记住,docker-compose 会向 docker 引擎提供指令。docker 引擎在 docker 主机上运行(而不是在 Jenkins 容器中)。因此 docker-compose 给 docker 引擎的任何路径都必须存在于 docker 主机上。


推荐阅读