我正在尝试构建一个 Traefik 动态配置,该配置具有用于"Host(app.localhost)"开发但用于"Host(realname.com)"生产的规则。我也在使用 Docker,但我认为这与我的问题无关。我的问题是:在我的动态配置中是否有使用环境变量的惯用方法?
文档提到了 Go 模板,但除此之外我不明白。实在是太缺乏了。我也考虑过类似envsubst 的东西,但希望不必安装其他工具。
我正在使用 Traefik 2.0+。此外,我必须使用文件提供程序,因为我在本地为 TLS 使用自签名证书。来自 Traefik 的文档:
在上面的示例中,我们使用文件提供程序来处理这些定义。这是配置证书(以及选项和存储)的唯一可用方法。但是,在 Kubernetes 中,证书可以而且必须由机密提供。
使用 traefik v2.0+ docker 镜像,您可以简单地docker-compose在.env文件中使用和定义您的环境变量。然后使用如下示例中的标签。
使用文件提供程序使用 traefik CLI 命令为本地主机添加自签名 TLS 证书:
--providers.file.filename=/etc/traefik/certs.toml
.env 本地文件:# Environment variables for docker-compose.yml
LOG_LEVEL=DEBUG
NETWORK=net
## dashboard configs
DASHBOARD_HOST=app.localhost
CONFIG_PATH=./config
CERT_PATH=./certs
Run Code Online (Sandbox Code Playgroud)
.env 生产中的文件:# Environment variables for docker-compose.yml
# LOG_LEVEL=INFO
LOG_LEVEL=ERROR
NETWORK=net
## dashboard configs
DASHBOARD_HOST=realname.com
CONFIG_PATH=./config
CERT_PATH=./certs
Run Code Online (Sandbox Code Playgroud)
# Environment variables for docker-compose.yml
LOG_LEVEL=DEBUG
NETWORK=net
## dashboard configs
DASHBOARD_HOST=app.localhost
CONFIG_PATH=./config
CERT_PATH=./certs
Run Code Online (Sandbox Code Playgroud)
# Environment variables for docker-compose.yml
# LOG_LEVEL=INFO
LOG_LEVEL=ERROR
NETWORK=net
## dashboard configs
DASHBOARD_HOST=realname.com
CONFIG_PATH=./config
CERT_PATH=./certs
Run Code Online (Sandbox Code Playgroud)
-----BEGIN CERTIFICATE-----
<THE CERTIFICATE STRING>
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
-----BEGIN RSA PRIVATE KEY-----
<THE RSA PRIVATE KEY STRING>
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
docker-compose将使用文件中${DASHBOARD_HOST}定义的值替换所有变量.env。
然后,您可以使用以下方法验证您的配置:docker-compose config
运行方式:docker-compose up -d
-d 标志用于分离模式,在后台运行容器
源文件:
您可以参考这个仓库在github上找到这个例子中的一个精心制作的版本,如何设置traefik v2使用docker-compose自签名或自动获取咱们加密通配符证书。
| 归档时间: |
|
| 查看次数: |
4229 次 |
| 最近记录: |