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

如何从Jenkins任务向docker run命令传递环境变量

解决方案

优先使用env_file传递环境变量的配置方法

  • 首先确认env_settings.env格式合规:每行使用KEY=VALUE格式,键值对两侧不要加多余空格,不需要额外加引号(除非变量值本身需要包含引号),注释行以#开头即可。
  • 在docker run参数中添加--env-file指定配置文件路径,你已经将文件复制到当前工作目录,直接添加参数即可,修改后的run命令示例:
docker run \
      -d --restart unless-stopped \
      --env-file ./env_settings.env \
      -e CLIENT_URL='https://test.customer.app' \
      -e SITE_NAME='My best site' \
      --name customer_front${stagePrefix} \
      -p ${externalPort}:3000 \
      customer_front${stagePrefix}
  • 验证参数生效:容器启动后执行docker exec customer_front${stagePrefix} env,可直接查看容器内的环境变量列表,确认变量是否正确注入,避免直接通过应用读取结果判断是否生效。

单变量直接传参不生效的排查

  • 当前写法-e DEFAULT_LOCALE=$DEFAULT_LOCALE是从执行docker命令的shell环境中读取变量值,需要先确认Jenkins任务执行上下文里对应变量是否已赋值,可在run命令前添加echo $DEFAULT_LOCALE $COUNTRY $CURRENCY打印变量值排查。
  • 如果变量存储在env_settings.env中,需要取消你注释掉的source env_settings.env行的注释,加载env文件到当前shell环境后,才能通过$变量名读取到对应值。

常见踩坑说明

如果上述操作都完成还是读不到变量,大概率是镜像本身的逻辑问题:你使用的是前端服务镜像,很多前端项目在build阶段会把环境变量直接编译打包到静态资源文件中,运行阶段注入的环境变量不会被静态资源读取,这种情况要么调整镜像启动逻辑,在容器启动时将环境变量注入到静态资源文件中,要么只能使用build阶段传ARG的方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:02