把 Compose 的代理变量传入容器
让代理变量成为 Compose 服务环境的一部分,而不是假定项目的 .env 文件会自动注入它们。
Compose 的项目 .env 文件提供插值用的值。要把其中一个值交给容器,需要在服务配置中引用它。
例如,.env 包含代理端点:
HTTP_PROXY=http://203.0.113.10:8080
服务把它同时用于 HTTP 和 HTTPS 目标请求:
services:
app:
image: your-image
environment:
HTTP_PROXY: "${HTTP_PROXY}"
HTTPS_PROXY: "${HTTP_PROXY}"
把文档地址和镜像替换掉;从你的服务或HTTP 代理列表中选择一个兼容的 HTTP 端点。普通的 HTTP 代理只要支持所请求的隧道,就能通过 CONNECT 承载 HTTPS。
显式的 env_file 条目是把选定文件的变量传给服务的另一种方式。项目的插值文件并不会充当隐式的容器 env_file。
检查应用实际收到了什么
docker compose config 显示解析后的服务配置。docker compose config --environment 则显示用于插值的值。
把服务环境与应用进程作比较。当你编辑 .env 时,已存在的容器不会收到新值;请通过既定的 Compose 生命周期应用改动,并允许服务中断。
如果变量缺失,就修正服务配置。如果变量存在但请求仍然直连,检查 HTTP 客户端的代理支持。环境注入只提供配置;应用必须真正使用它。