【发布时间】:2019-10-26 19:01:18
【问题描述】:
我正在努力使用 traefik 设置 Docker 群堆栈。我决定尝试使用 traefik 作为 jwolder/nginx-proxy 的替代品,因为不幸的是后者似乎不支持 Docker shrarm 模式。但我发现 traefik 是个问题(可能是我的错!)。
我有一个 WordPress 容器(复制)和一个 MySQL 容器,以及 traefik 容器。 swarm 中的所有容器都已创建并启动,docker logs <container_id> 没有显示任何错误,但是当我访问“example.org”(不是真正的域)时,我只看到404 page not found。所以这一定是 traefik 和我希望代理的容器之间的通信问题。但是我也没有看到 traefik 仪表板,所以可能还有其他事情发生。
这是我的 docker-compose 文件:
version: '3'
services:
traefik:
image: traefik:latest
command: --api.insecure=true \
--providers.docker=true \
--providers.docker.exposedbydefault=false \
--providers.docker.swarmmode=true \
--providers.docker.watch=true \
--logLevel=DEBUG
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- traefik
deploy:
mode: global
placement:
constraints:
- node.role == manager
db:
image: mysql:5.7
volumes:
- ./db/initdb.d:/docker-entrypoint-initdb.d
networks:
- traefik
environment:
MYSQL_ROOT_PASSWORD: <root_password>
MYSQL_DATABASE: <db_name>
MYSQL_USER: <db_user>
MYSQL_PASSWORD: <user_password>
deploy:
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
app:
image: my-repo/wordpress:latest
depends_on:
- db
networks:
- traefik
environment:
- VIRTUAL_PORT=80
- VIRTUAL_HOST=example.org
deploy:
replicas: 2
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:example.org"
networks:
traefik:
原始的 nginx-proxy 设置运行良好,但正如我所说,不允许我运行 swarm。我只试验了一天的 traefik,所以这可能是某种小学生的错误。
注意:我在 /etc/hosts 中将我的实际 .org 域别名为 127.0.0.1。也许这是个问题?我无法想象会是这样,我已经使用该设置运行 Docker 容器多年没有问题。
【问题讨论】:
标签: docker docker-compose traefik docker-swarm-mode