У меня есть докер, докер-сочинитель и консул, установленный на моей локальной машине. Теперь я хочу зарегистрировать одну из моих услуг в Консуле, используя регистратор. Файл Docker моего сервиса прост как:Невозможно зарегистрировать службу докеров с регистратором
FROM php:7.0-apache
COPY code/ /var/www/html/
ENV SERVICE_ID=php
ENV SERVICE_NAME=php-apache
Кроме того, у меня есть консул. Я могу проверить это с помощью простых команд, таких как:
$ curl -X PUT 'Hello world ' 127.0.0.1:8500/v1/kv/msg1
$ curl 127.0.0.1:8500/v1/kv/msg1?raw
Hello world
тогда я начинаю регистратор, контейнер, после одного из учебных пособий:
$ sudo docker run -d --name registrator-consul -v /var/run/docker.sock:/tmp/docker.sock \
-h jacobian-VirtualBox gliderlabs/registrator \
-ip 127.0.0.1 consul://127.0.0.1:8500
Wnen Я запустить выше команду, я получаю некоторые большой ключ в консоли :
a25a48 ... 3b69
Все выглядит хорошо, так как у меня нет сообщений об ошибках. Если же я проверяю
$ docker ps
Я не вижу никаких активных изображений
Но в то же время, если я бегу
$ docker ps -a
Я вижу эту строку на самом верху:
CONTAINER ID ... STATUS
##somecode## ... Exited(1) 52 seconds ago
Это точно контейнер-регистратор-консул, и мне не нравится, что он вышел. Я не делал этого сам, поэтому действительно странно, что он не находится в активном состоянии.
я, наконец, построить и запустить мой PHP-апачский контейнер:
$ docker build -t php-apache.
$ docker run -d --name php-apache -p 8181:80 php-apache
На данный момент, все прекрасно работает. Я даже могу проверить, работает ли моя служба. Итак, когда я перехожу на localhost: 8181, я вижу красивую страницу с веб-сервером Apache. НО. Моя задача - проверить, зарегистрирована ли она в консуле или нет. Я проверить это следующим образом:
$ curl jacobian-VirtualBox:8500/v1/catalog/services | jq '.'
Но в результате этой команды я вижу это в консоли:
{
"consul": []
}
Таким образом, никаких услуг не было зарегистрировано. Почему мой вопрос? Что я сделал не так, и как я могу это исправить? Благодаря!
Для тех людей, которые голосуют. Пожалуйста, поделитесь своими мыслями по этой теме. – Jacobian
Я неправильно понял некоторые вещи. Сначала, как вы можете выполнить запрос 'curl' в контейнер jacobian, если он вышел? Во-вторых, поскольку я видел, что регистратор консула и ваш сервер Apache не сообщают друг друга. Почему консул должен зарегистрировать ваш сервер Apache? – Cortwave
Вся проблема заключалась в том, как запускается контейнер-регистратор. Я удалил '-ip 127.0.0.1' и добавил' --net = host', и он начал работать. – Jacobian