在 aws 上使用 docker 服务设置 traefik
Setting up traefik with docker services on aws
我正在尝试在我的 docker 服务中使用 traefik(虽然只有 1 个 docker 服务开始)我已经能够设置 traefik 但是它忽略了我在 docker 撰写文件中包含的标签。我在 AWS 上使用 docker 群。
日志表明
"Filtering container without port and no traefik.port label service_myapp.3"
我已经使用 docker service inspect
和 docker container inspect
检查了服务和容器,并且标签都存在。
traefik 网络控制台显示了一个 docker 选项卡,但下面什么也没有。
这是我的traefik.toml
logLevel = "DEBUG"
traefikLogsFile = "/var/logs/traefik.log"
[entryPoints]
[entryPoints.http]
address = ":80"
[web]
address = ":8080"
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "docker.localhost"
watch = true
swarmmode = true
exposedbydefault = false
这是我的 docker 编写 yml
version: "3.4"
configs:
traefik:
external:
name: traefik
services:
traefik:
image: traefik:1.3.5
configs:
- source: traefik
target: /etc/traefik/traefik.toml
mode: 0400
depends_on:
- myapp
volumes:
- traefiklogs:/var/logs
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
- 443:443
- 8080:8080
networks:
- public
- private
tty: true
deploy:
mode: global
placement:
constraints:
- node.role == manager
myapp:
image: myapp
deploy:
endpoint_mode: vip
replicas: 3
restart_policy:
condition: on-failure
ports:
- "4000:8080"
networks:
- public
- private
labels:
traefik.frontend.rule: "Host:myapp.myapp.com"
traefik.backend: "myapp"
traefik.docker.network=: "public"
traefik.enable: "true"
traefik.port: "4000"
networks:
public:
driver_opts:
encrypted: 1
private:
driver_opts:
encrypted: 1
volumes:
sqldata:
traefiklogs:
使用 swarmmode = true
,您需要在服务而不是容器上设置标签。这是通过在 deploy
部分定义标签来完成的:
version: "3.4"
configs:
traefik:
external:
name: traefik
services:
traefik:
image: traefik:1.3.5
configs:
- source: traefik
target: /etc/traefik/traefik.toml
mode: 0400
depends_on:
- myapp
volumes:
- traefiklogs:/var/logs
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
- 443:443
- 8080:8080
networks:
- public
- private
tty: true
deploy:
mode: global
placement:
constraints:
- node.role == manager
myapp:
image: myapp
deploy:
endpoint_mode: vip
replicas: 3
restart_policy:
condition: on-failure
labels:
traefik.frontend.rule: "Host:myapp.myapp.com"
traefik.backend: "myapp"
traefik.docker.network=: "public"
traefik.enable: "true"
traefik.port: "4000"
ports:
- "4000:8080"
networks:
- public
- private
networks:
public:
driver_opts:
encrypted: 1
private:
driver_opts:
encrypted: 1
volumes:
sqldata:
traefiklogs:
我正在尝试在我的 docker 服务中使用 traefik(虽然只有 1 个 docker 服务开始)我已经能够设置 traefik 但是它忽略了我在 docker 撰写文件中包含的标签。我在 AWS 上使用 docker 群。
日志表明
"Filtering container without port and no traefik.port label service_myapp.3"
我已经使用 docker service inspect
和 docker container inspect
检查了服务和容器,并且标签都存在。
traefik 网络控制台显示了一个 docker 选项卡,但下面什么也没有。
这是我的traefik.toml
logLevel = "DEBUG"
traefikLogsFile = "/var/logs/traefik.log"
[entryPoints]
[entryPoints.http]
address = ":80"
[web]
address = ":8080"
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "docker.localhost"
watch = true
swarmmode = true
exposedbydefault = false
这是我的 docker 编写 yml
version: "3.4"
configs:
traefik:
external:
name: traefik
services:
traefik:
image: traefik:1.3.5
configs:
- source: traefik
target: /etc/traefik/traefik.toml
mode: 0400
depends_on:
- myapp
volumes:
- traefiklogs:/var/logs
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
- 443:443
- 8080:8080
networks:
- public
- private
tty: true
deploy:
mode: global
placement:
constraints:
- node.role == manager
myapp:
image: myapp
deploy:
endpoint_mode: vip
replicas: 3
restart_policy:
condition: on-failure
ports:
- "4000:8080"
networks:
- public
- private
labels:
traefik.frontend.rule: "Host:myapp.myapp.com"
traefik.backend: "myapp"
traefik.docker.network=: "public"
traefik.enable: "true"
traefik.port: "4000"
networks:
public:
driver_opts:
encrypted: 1
private:
driver_opts:
encrypted: 1
volumes:
sqldata:
traefiklogs:
使用 swarmmode = true
,您需要在服务而不是容器上设置标签。这是通过在 deploy
部分定义标签来完成的:
version: "3.4"
configs:
traefik:
external:
name: traefik
services:
traefik:
image: traefik:1.3.5
configs:
- source: traefik
target: /etc/traefik/traefik.toml
mode: 0400
depends_on:
- myapp
volumes:
- traefiklogs:/var/logs
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
- 443:443
- 8080:8080
networks:
- public
- private
tty: true
deploy:
mode: global
placement:
constraints:
- node.role == manager
myapp:
image: myapp
deploy:
endpoint_mode: vip
replicas: 3
restart_policy:
condition: on-failure
labels:
traefik.frontend.rule: "Host:myapp.myapp.com"
traefik.backend: "myapp"
traefik.docker.network=: "public"
traefik.enable: "true"
traefik.port: "4000"
ports:
- "4000:8080"
networks:
- public
- private
networks:
public:
driver_opts:
encrypted: 1
private:
driver_opts:
encrypted: 1
volumes:
sqldata:
traefiklogs: