У меня очень простая конфигурация docker-compose:
version: '3.5'
services:
consul:
image: consul:latest
hostname: "consul"
command: "consul agent -server -bootstrap-expect 1 -client=0.0.0.0 -ui -data-dir=/tmp"
environment:
SERVICE_53_IGNORE: 'true'
SERVICE_8301_IGNORE: 'true'
SERVICE_8302_IGNORE: 'true'
SERVICE_8600_IGNORE: 'true'
SERVICE_8300_IGNORE: 'true'
SERVICE_8400_IGNORE: 'true'
SERVICE_8500_IGNORE: 'true'
ports:
- 8300:8300
- 8400:8400
- 8500:8500
- 8600:8600/udp
networks:
- backend
registrator:
command: -internal consul://consul:8500
image: gliderlabs/registrator:master
depends_on:
- consul
links:
- consul
volumes:
- /var/run/docker.sock:/tmp/docker.sock
networks:
- backend
image_tagger:
build: image_tagger
image: image_tagger:latest
ports:
- 8000
networks:
- backend
mongo:
image: mongo
command: [--auth]
ports:
- "27017:27017"
restart: always
networks:
- backend
volumes:
- /mnt/data/mongo-data:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: qwerty
postgres:
image: postgres:11.1
# ports:
# - "5432:5432"
networks:
- backend
volumes:
- ./postgres-data:/var/lib/postgresql/data
- ./scripts:/docker-entrypoint-initdb.d
restart: always
environment:
POSTGRES_PASSWORD: qwerty
POSTGRES_DB: ttt
SERVICE_5432_NAME: postgres
SERVICE_5432_ID: postgres
networks:
backend:
name: backend
(и некоторые другие службы)
Также я настроил dnsmasq на хосте для доступа к контейнерам по внутреннему имени.Я провел пару дней, но все еще не смог сделать его стабильным: 1. Очень часто некоторые службы просто не регистрируются регистратором (иногда я получаю 5 из 15).2. Очень часто контейнеры регистрируются с неправильным IP-адресом.Таким образом, в информации о контейнере у меня один адрес (правильный), в консуле - другой (неправильный).И когда я хочу обратиться к какой-либо службе по адресу, подобному myservice.service.consul, я оказываюсь в неправильном контейнере.3. Иногда разрешение вообще не работает, даже если контейнеры зарегистрированы с правильным ip.
Есть ли ошибки в конфигурации?