我想转换我的docker run命令,但是我无法使其工作。这是我使用的docker run命令,效果很好
sudo docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $PWD/traefik.toml:/traefik.toml \
-v $PWD/acme.json:/acme.json \
-p 80:80 \
-p 443:443 \
-l traefik.frontend.rule=Host:monitor.localhost \
-l traefik.port=8080 \
--network traefik-proxy \
--name traefik \
traefik --docker
这是我构建的撰写文件:
version: "3"
services:
traefik:
image: traefik
container_name: traefik-2
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
labels:
traefik.frontend.rule: "Host:monitor.localhost"
traefik.port: "8080"
networks:
default:
external:
name: traefik-proxy
问题是,当我使用docker-compose时,代理似乎可以正常工作,但是当我访问监控站点(monitor.localhost)时,找不到我的404。我已经仔细检查了所有内容,但是我无法弄清楚撰写文件出了什么问题。我试图进入容器的外壳,看它是否还好,但是显然基于Alpine的Traefik图像没有重击,甚至没有sh。
答案 0 :(得分:1)
正如Wie在评论中所指出的那样,您没有在--docker
中传递docker-compose.yml
标志。像这样尝试:
version: "3"
services:
traefik:
image: traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
ports:
- 80:80
- 443:443
labels:
traefik.frontend.rule: Host:monitor.localhost
traefik.port: 8080
command: ["--docker"]
networks:
default:
external:
name: traefik-proxy