gpt4 book ai didi

docker - traefik - 同一主机的多个端口绑定(bind) V2

转载 作者:行者123 更新时间:2023-12-02 18:13:32 52 4
gpt4 key购买 nike

我无法弄清楚如何在本地主机上通过 http 和 https 访问一个简单的服务。这是我目前的设置,我使用的是 traefik V2.xxx。

我希望能够同时使用 https/http 协议(protocol)访问该站点(仅出于开发机器上的原因)。 https 工作得很好,但 http 不行。我需要添加/删除/更改哪些标签?

http://whoami.localhost:8000/
https://whoami.localhost:8443/

docker-compose.yml

version: "3.7"

services:

whoami:
image: containous/whoami
labels:
- traefik.enable=true
- traefik.http.routers.whoami.rule=Host(`whoami.localhost`)
- traefik.http.routers.whoami.entrypoints=web,web-secure
- traefik.http.routers.whoami.tls=true
- traefik.protocol=http,https

reverse-proxy:
depends_on:
- whoami
image: traefik:v2.1.1
ports:
- 8000:80
- 8443:443
- 8001:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik:/etc/traefik:ro

traefik/traefik.toml
[log]
level = "DEBUG"

[accessLog]
filePath = "/logs/access.log"
bufferingSize = 20

[docker]
exposedbydefault = false

[api]
dashboard = true
insecure = true

[providers]
[providers.file]
filename = "/etc/traefik/traefik.toml"
watch = true

[providers.docker]
exposedbydefault = false

[[tls.certificates]]
certFile = "/etc/traefik/certs/localhost-cert.pem"
keyFile = "/etc/traefik/certs/localhost-key.pem"

[entryPoints]
[entryPoints.web]
address = ":80"

[entryPoints.web-secure]
address = ":443"

C:\Windows\System32\drivers\etc\hosts
127.0.0.1 whoami.localhost

最佳答案

终于得到了这个工作。 traefik 文档在某些主题上完全处于深奥领域,鉴于最近的主要 2.0 版本,还没有很多示例。
这是我的工作 docker-compose.yml 文件,现在使用同一主机“whomai.localhost”在端口 8000 (http) 和 8443 (https) 上公开应用程序。

version: "3.7"

services:

whoami:
image: containous/whoami
labels:
- traefik.enable=true
- traefik.http.routers.whoami-http.rule=Host(`whoami.localhost`)
- traefik.http.routers.whoami-http.entrypoints=web
- traefik.http.routers.whoami-http.service=whoami-http-service
- traefik.http.services.whoami-http-service.loadbalancer.server.port=80

- traefik.http.routers.whoami-https.rule=Host(`whoami.localhost`)
- traefik.http.routers.whoami-https.entrypoints=web-secure
- traefik.http.routers.whoami-https.service=whoami-https-service
- traefik.http.services.whoami-https-service.loadbalancer.server.port=80
- traefik.http.routers.whoami-https.tls=true

reverse-proxy:
depends_on:
- whoami
image: traefik:v2.1.1
ports:
- 8000:80
- 8443:443
- 8001:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik:/etc/traefik:ro

trafik 2.x 中的路由器和服务可以使用您想要使用 docker 标签的任何命名约定动态创建。在此设置中,我只是将它们称为 whoami-httpwhoami-https对于路由器和 whoami-http-servicewhoami-https-service为服务。由于我动态创建自己的路由器/服务而不是使用默认值,因此必须明确告知每个服务的负载均衡器目标应用程序的服务器端口。由于 whoami 应用程序仅公开端口 80 本身并且 TLS 在 traefik 终止,因此将其定义为 http 和 https 服务的端口 80。
对于此类自定义路由器/服务设置,上面显示的所有标签都是必需的,不能省略。
traefik dashboard
我正在使用 mkcert如果您想知道,请在 Windows 10 上获取有效的本地证书。
mkcert -install

mkcert -key-file traefik\certs\localhost-key.pem -cert-file traefik\certs\localhost-cert.pem whoami.localhost localhost 127.0.0.1 ::1

关于docker - traefik - 同一主机的多个端口绑定(bind) V2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59830648/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com