私はDockerとDocker Composeを自分のマシンに持っており、私はdocker-compose.ymlファイルを持っています。このファイルの内部私はそうすべてのサービスが登録者との領事に登録されているわけではありません
...
nginx:
build:
context: ./nginx-proxy'
image: nginx-proxy
container_name: nginx
ports:
- 8181:80
links:
- consul-server
- php
depends_on:
-registrator
php:
build:
context: ./php-apache
image: php-apache
container_name: php-apache
depends_on:
- registrator
...
また、領事・サーバーとレジコンテナの定義が含まれ、非常に大きなドッキングウィンドウ-compose.ymlファイル、であるような2つのサービスを定義します。一見すると、すべてがうまくいく。実行したとき:
$ docker-compose up
私のすべてのコンテナが実行中で、エラーメッセージが表示されません。私は、例えばPHPのコンテナが実際に動作していることを確認することもできます(localhost:8181に行って、このサービスでレンダリングされた素敵なhtmlページを見ています)。しかし、問題は、このPHPサービスは登録者に登録されていないことです。その結果
$ curl 127.0.0.1:8500/v1/catalog/services
、私はこの取得:私はそうのようにそれをチェックレジが正常にnginxのプロキシサービスを登録しますが、PHPのサービスをスキップしたいくつかの奇妙な理由で、だから、
{"consul-server-8500":[], "nginx-proxy-80":[]}
を。なぜ私は不思議です。これに基づいて、nginx-proxyサービス用の領事テンプレートを作成するので、本当に必要です。だから、私はいくつかの助けが必要です。
EDIT
これは私が領事やレジサービスを定義する方法である:
version: '2'
services:
consul-server:
build:
context: ./consul-server
hostname: ${MYHOST}
ports:
- 8500:8500
registrator:
build:
context: ./registrator
container_name: registrator
command: "consul://${MYHOST}:8500"
hostname: ${MYHOST}
network_mode: host
depends_on:
- consul-server
volumes:
- /var/run/docker.sock:/tmp/docker.sock
そして、これは私のレジDockerfileがどのように見えるかです:
を記録レジFROM gliderlabs/registrator:latest
ENV SERVICE_ID=registrator
ENV SERVICE_NAME=registrator
ENTRYPOINT ["/bin/registrator"]
それが重要な場合
わからない、:
2017/01/17 11:52:52 Starting registrator v7 ... 2017/01/17 11:52:52 Using consul adapter: consul://127.0.0.1:8500 2017/01/17 11:52:52 Connecting to backend (0/0) 2017/01/17 11:52:52 consul: current leader 2017/01/17 11:52:52 Listening for Docker events ... 2017/01/17 11:52:52 Syncing services on 2 containers 2017/01/17 11:52:52 ignored: c7251ebcbec4 no published ports 2017/01/17 11:52:52 ignored: d22263dca979 port 8301 not published on host 2017/01/17 11:52:52 ignored: d22263dca979 port 8302 not published on host 2017/01/17 11:52:52 ignored: d22263dca979 port 8600 not published on host 2017/01/17 11:52:52 ignored: d22263dca979 port 8600 not published on host 2017/01/17 11:52:52 ignored: d22263dca979 port 8300 not published on host 2017/01/17 11:52:52 ignored: d22263dca979 port 8302 not published on host 2017/01/17 11:52:52 ignored: d22263dca979 port 8301 not published on host 2017/01/17 11:52:52 added: d22263dca979 consul 2017/01/17 11:52:52 ignored: d22263dca979 port 8400 not published on host 2017/01/17 11:52:52 ignored: c7251ebcbec4 no published ports 2017/01/17 11:52:52 ignored: 74a190734619 port 80 not published on host 2017/01/17 11:52:53 added: bd9f65b332a5 nginx 2017/01/17 11:52:53 ignored: bd9f65b332a5 port 443 not published on host
は、私の知る限り見ることができるようにレジは私のPHPサービス(ドッキングウィンドウのID = 74a190734619)を無視します。しかし、私はそれをどのように修正できるのか分かりません。
バグですか - https://github.com/gliderlabs/registrator/issues/474? – Jacobian
docker-compose versionはあなたが使っていますか?ドッカーによるv2リンクの作成は推奨されておらず、代わりにネットワークを使用する必要があります。登録者サービス宣言も追加します。 – Cortwave
ドッカーの作成バージョンを確認するにはどうすればよいですか?登録者サービス宣言については、数分で投稿します。 – Jacobian