私はthisのチュートリアルに従っており、ドッカークライアントを呼び出すシェルスクリプトの代わりにDocker Composeを使用してインフラストラクチャを起動しようとしています。 gitlab-postgreqlとgitlab-redisの前にgitlabコンテナが起動されていることを除いて、すべてうまく動作します。したがって、これらのサービスが既に実行されていることを期待して失敗します。Dockerで他のコンテナをコンテナ待ちにする方法
depends_on属性を使用しようとしましたが、問題は解決しませんでした。私が知る限り、他の容器がより早く始めるなら、それは助けにならない。私が調べた研究の後、Docker Composeはコンテナの作成順序を制御するためのすぐれたソリューションを提供しません。
これはどのようにすることができますか?私はそのような基本的な機能が実装されていないとは信じられません。 Dockerがそれ自身の巧みさに悩まされており、基本を忘れているようです。さて、何か狂ったサポートスクリプトを使わずにコンテナの作成順序を制御するにはどうすればいいですか(最初はすべてのスクリプト/ドッカークライアントを使うよりももっと複雑です)
ここにdocker-compose.yml asそれは、
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"
これはばかげた壊れたツールを学ぶために、これらのハッキングを学ぶ時間を無駄にするよりも、成熟した成熟を待っているほうがよいでしょう。とにかく答えてくれてありがとう、それは面白い冗談だった。 –
@TuomasToivonenこの問題は、分散システムの分野では解決するのが簡単ではなく、アプリケーション層のチェックインを行うのが最善の方法であるとアドバイスしています。しかし、私はそれが作成によって提供されるべきであることに同意しますが、今この "回避策"は**ドッカードキュメント**による正式な提案です。とにかくこの機能の[このPULL REQUEST-374](https://github.com/docker/compose/issues/374)(2014年以降開かれています)。 – VladoDemcak
優れた答え私はそれがドッカーの作成文書の一部であることを知らなかった。この質問は、さまざまな変数で何度も尋ねられます。このリンクは、この種の質問に答えるための作業を容易にします –