Docker 18.06.1-ce, traefik 1.7.3, dnsmasq, Mac 10.14
У меня есть настройка docker-compose с Traefik, и мне нужно получить доступ к нескольким службам внутри сети / контейнеров Docker и извне.
В Linux-боксе (с перенаправлением Let'sEncrypt и http на https) все работает с использованием одного и того же FQDN как для внутреннего, так и для внешнего доступа к контейнеру Docker, и мне не нужно использовать имена служб.
Когда я запускаю curl http://belapi.dev.biodati.test
из контейнера конвейера, используя docker-compose exec belapi / bin / bash, я получаю следующую ошибку (и не вижу ее в журналах доступа Traefik):
api@407cf7105aee:/app$ curl http://belapi.dev.biodati.test/status
curl: (7) Failed to connect to belapi.dev.biodati.test port 80: Connection refused
Это отлично работает (используя имя_службы):
curl http://belapi:8000/status
Я также могу запустить следующий штраф из оболочки bash на моем Mac за пределами док-контейнеров (и я вижу, что он попадает в журналы доступа Traefik):
curl http://belapi.dev.biodati.test/status
У меня есть настройка dnsmasq для пересылки всех * .test доменов на 127.0.0.1.
Изнутри контейнера трубопровода:
dig belapi.dev.biodati.test
;; QUESTION SECTION:
;belapi.dev.biodati.test. IN A
;; ANSWER SECTION:
belapi.dev.biodati.test. 7 IN A 127.0.0.1
Мой файл docker-compose:
networks:
biodati:
external: true
services:
pipeline:
container_name: pipeline
image: biodati/bel_pipeline:dev
networks:
biodati:
traefik:
image: traefik:1.7
container_name: traefik
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./conf/traefik.toml:/traefik.toml
- ./logs:/logs
networks:
biodati:
labels:
- traefik.enable=true
- traefik.backend=traefik
- traefik.frontend.rule=Host:traefik.${BS_HOST_NAME:?err}
- traefik.port=8080
- traefik.docker.network=biodati
# BEL API - core requirement
belapi:
container_name: belapi
image: belbio/bel_api:localdev
networks:
biodati:
labels:
- traefik.enable=true
- traefik.backend=belapi
- traefik.frontend.rule=Host:belapi.${BS_HOST_NAME:?err};
- traefik.port=8000
- traefik.docker.network=biodati