#node.js #docker #docker-compose #docker-swarm #docker-swarm-mode
#node.js #docker #docker-compose #docker-swarm #режим docker-swarm-mode
Вопрос:
Я пытаюсь настроить базовую систему, в которой контейнер traefik служит обратным прокси для внутреннего сервера nodejs. Traefik находится в своем собственном контейнере, и у nodejs также есть контейнер. Цель здесь — разрешить обновление службы nodejs без каких-либо простоев с помощью docker в режиме swarm. Вот следующая конфигурация, которая у меня есть для моих файлов compose и traefik.yml, но, похоже, я не могу получить доступ к панели мониторинга traefik на localhost: 8080 или сервере nodejs.
Сервер nodejs запущен на порту 9200. Взглянул на существующие ответы stack overflow, и они в значительной степени имеют ту же конфигурацию, что и приведенная ниже. Я что-то здесь упускаю?
compose.yml
version: "3.7"
services:
api:
image: example/hobby:v1
deploy:
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 5
window: 120s
rollback_config:
parallelism: 1
delay: 20s
order: stop-first
update_config:
parallelism: 1
delay: 15s
failure_action: rollback
order: stop-first
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`localhost`)"
- "traefik.http.routers.api.entrypoints=insecure"
# - "traefik.http.routers.api.service=api"
- "traefik.http.services.api.loadbalancer.server.port=9200"
placement:
constraints:
- node.role == worker
env_file:
- ./.env
networks:
- verse
reverse-proxy:
image: traefik:v2.3
deploy:
mode: global
labels:
# - "traefik.http.routers.reverse-proxy.middlewares=auth"
- "traefik.enable=true"
- "traefik.http.routers.api.entrypoints=insecure"
- "traefik.http.routers.api.rule=Host(`localhost`)"
placement:
constraints: [node.role==manager]
# ports:
# - target: 80
# published: 80
# mode: host
# - target: 8080
# published: 8080
# mode: host
networks:
- verse
ports:
- "80:80"
- "8080:8080" # traefik dashboard
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
# - "/var/run/docker.sock:/var/run/docker.sock"
- ./traefik.yml:/etc/traefik/traefik.yml
networks:
verse:
# driver: overlay
external: false
traefik.yml
entryPoints:
insecure:
address: ":80"
traefik:
address: ":8080"
log:
level: DEBUG
# filePath: /path/to/log-file.log
format: json
api:
# insecure: true
dashboard: true
debug: true
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
swarmMode: true
watch: true
network: verse
middlewares:
auth:
basicAuth:
users:
- "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"