You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将.env变量从docker-compose传递到entrypoint脚本?

实现方案

首先明确:你配置里的VARIABLE_YML已经通过docker-compose的environment字段注入容器,entrypoint.sh默认就能直接读取;无法读取的是.env里的VARIABLE_ENV,因为.env默认仅给docker-compose本身读取,不会自动注入到容器内部环境。

你可以通过以下两种方式解决:

方式1:显式指定需要注入的.env变量

在docker-compose的environment配置中,引用.env里的变量注入容器,修改后的docker-compose.yml如下:

version: '3'

services:
  service:
    volumes:
      - ./entrypoint.sh:/entrypoint.sh
    environment:
      - VARIABLE_YML=VALUE_YML
      # 引用宿主机.env里的VARIABLE_ENV注入容器
      - VARIABLE_ENV=${VARIABLE_ENV}
    entrypoint: /entrypoint.sh

这种方式适合只需要注入部分.env变量的场景,可控性更高。

方式2:批量加载整个.env文件到容器

如果需要注入的变量较多,可以直接用env_file字段把整个.env文件加载到容器环境中,修改后的docker-compose.yml如下:

version: '3'

services:
  service:
    volumes:
      - ./entrypoint.sh:/entrypoint.sh
    environment:
      - VARIABLE_YML=VALUE_YML
    # 批量加载.env文件的所有变量到容器
    env_file: .env
    entrypoint: /entrypoint.sh

注意事项

  • 要提前给entrypoint.sh加可执行权限,本地执行chmod +x entrypoint.sh即可,否则容器启动会报权限错误
  • 配置修改完成后需要执行docker-compose up --force-recreate重启容器,新的环境变量配置才会生效
  • 如果.env变量包含空格、特殊符号,建议用单/双引号包裹变量值,避免解析异常

配置完成后启动容器,entrypoint.sh就能正常输出两个变量的值。

内容的提问来源于stack exchange,提问作者Bruno Massa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:45:03