将docker run转换为docker compose

时间:2019-05-23 08:27:06

标签: docker docker-compose

我想转换我的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。

1 个答案:

答案 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