gpt4 book ai didi

traefik - 使用 LetsEncrypt 和多个 Docker 后端部署 Traefik

转载 作者:行者123 更新时间:2023-12-02 04:28:08 27 4
gpt4 key购买 nike

我正在考虑为我的网络项目 (Kestrel/.Net Core) 将 Apache 替换为 Traefik。阅读文档后,关于 Traefik,我还有一些不清楚的地方:

1/Traefik 是否自动处理 LetsEncrypt 证书更新,还是需要手动或通过外部脚本完成?从文档中可以看出,这是在添加新主机或重启时执行的,但是在没有任何重启/添加新主机的情况下运行 Traefik 3 个月后会发生什么?

2/当 Docker 后端变得无法访问时,如何提供自定义静态 HTML 页面?我可以从文档中看到如何设置特定的错误页面,但看不到如何在给定后端变得不可用时将流量重定向到它。

3/当需要更新 Docker 后端时,在执行 Docker 停止/重启之前是否需要在 Traefik 上执行一些步骤?

4/似乎我无法同时运行 2 个 docker 后端,请参阅下面的配置文件,如果我取消注释第二个后端 (api.mydomain.io),那么第一个将变得不可用了。我在这里遗漏了什么吗?

version: '3'

services:
reverse-proxy:
image: traefik # The official Traefik docker image
command: --docker # Enables the web UI and tells Træfik to listen to docker
ports:
- "80:80" # The HTTP port
- "443:443" # The HTTPS port
- "8080:8080" # The Web UI (enabled by --api)
networks:
- proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $PWD/traefik.toml:/etc/traefik/traefik.toml
- $PWD/acme.json:/acme.json
- /root/mydomain_prod/cert/:/certs/
- /root/mydomain_prod/503.html:/503.html
container_name: traefik-reverse-proxy

##############################
# Front - www.mydomain.io
##############################
mydomain-front:
image: mydomain-front
labels:
- traefik.enable=true
- traefik.backend=mydomain-front
- traefik.frontend.rule=Host:traefik.mydomain.io
- traefik.port=8084
networks:
- internal
- proxy
container_name: mydomain-front


##############################
# API - api.mydomain.io
# Note: If I uncomment this one, then www.mydomain.io won't work anymore
##############################
#mydomain-api:
# image: mydomain-api
# labels:
# - traefik.enable=true
# - traefik.backend=mydomain-api
# - traefik.frontend.rule=Host:api.mydomain.io
# - traefik.port=8082
# networks:
# - internal
# - proxy
# container_name: mydomain-api

非常感谢,

弗洛

最佳答案

1/Traefik 可以处理 LetsEncrypt 证书更新。请记住创建一个卷来存储 acme.json 文件。当证书过期时,Traefik 会自动更新。

2/不知道可不可以。如果您找到解决方案,请分享。

3/当你需要更新一个Docker的时候,就更新它。 Traefik 将从该更改中触发,并且更新是自己的配置。

4/您可以同时运行后端。下面你可以看到一个 docker-compose.yml 配置:

version: '3'
services:
two-backend-service:
restart: always
image: ……..
labels:
- traefik.enable=true
- traefik.service1.frontend.rule=Host:service1.exemple.com
- traefik.service1.frontend.passHostHeader=true
- traefik.service1.port=8082
- traefik.Service2.backend=service2
- traefik.Service2.frontend.rule=Host:service2.exemple.com
- traefik.Service2.frontend.passHostHeader=true
- traefik.Service2.port=8081

traefik:
build:
context: ./traefik
dockerfile: Dockerfile
restart: always
ports:
- 80:80
- 443:443
labels:
- traefik.enable=false
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_letsencrypt:/etc/traefik/acme/

volumes:
traefik_letsencrypt:
driver: local

关于traefik - 使用 LetsEncrypt 和多个 Docker 后端部署 Traefik,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51731265/

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