我正在按照这个教程尝试使用Docker Compose启动基础设施,而不是调用docker客户端的shell脚本。一切正常,除了gitlab容器在gitlab-postgreql和gitlab-redis之前启动,因此失败,因为它期望这些服务已经在运行。
我尝试使用depends_on属性,但它没有解决问题。据我所知,如果其他容器启动得更快,它也没有帮助。经过研究,我发现Docker Compose没有提供开箱即用的解决方案来控制容器创建顺序。
这怎么可能呢?我不能相信这样一个基本功能被未实现。似乎Docker在自己的聪明才智上绊倒了,并忘记了基础知识。那么,如何在没有一些疯狂的支持脚本(这将使整个配置比仅使用脚本/ docker客户端更混乱)的情况下控制容器创建顺序?
这是docker-compose.yml的内容:
我尝试使用depends_on属性,但它没有解决问题。据我所知,如果其他容器启动得更快,它也没有帮助。经过研究,我发现Docker Compose没有提供开箱即用的解决方案来控制容器创建顺序。
这怎么可能呢?我不能相信这样一个基本功能被未实现。似乎Docker在自己的聪明才智上绊倒了,并忘记了基础知识。那么,如何在没有一些疯狂的支持脚本(这将使整个配置比仅使用脚本/ docker客户端更混乱)的情况下控制容器创建顺序?
这是docker-compose.yml的内容:
version: '2'
services:
gitlab-postgresql:
image: sameersbn/postgresql:9.4-3
volumes:
- /srv/docker/gitlab/postgresql:/var/lib/postgresql
environment:
- DB_NAME=gitlabhq_production
- DB_USER=gitlab
- DB_PASS=password
gitlab-redis:
image: sameersbn/redis:latest
volumes:
- /srv/docker/gitlab/redis:/var/lib/redis
depends_on:
- "gitlab-postgresql"
gitlab:
image: sameersbn/gitlab:7.14.3
volumes:
- /srv/docker/gitlab/gitlab:/home/git/data
ports:
- "2222:22"
- "8080:80"
environment:
- GITLAB_PORT=8080
- GITLAB_SSH_PORT=2222
depends_on:
- gitlab-postgresql
- gitlab-redis
registry:
image: registry:2
volumes:
- /srv/docker/registry/data:/var/lib/registry
ports:
- "5000:5000"
depends_on:
- "gitlab"
jenkins:
image: jenkins:1.609.3
volumes:
- /srv/docker/jenkins/home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/bin/docker
- /usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:/lib/x86_64-linux-gnu/libapparmor.so.1
ports:
- "8081:8080"
- "50000:50000"
user: root
depends_on:
- "registry"