Bash docker的环境变量由Jenkins内部组成

Bash docker的环境变量由Jenkins内部组成,bash,shell,jenkins,docker,environment-variables,Bash,Shell,Jenkins,Docker,Environment Variables,我已完成以下设置: 运行docker compose的Jenkins环境,但我需要将环境变量传递到yml文件: 示例docker-compose.yml version: '2' services: logon_server: build: . image: my_server:0.0.1 ports: - "9200:9200" command: ${DOCKER_CMD_EXEC} networks: - my_ntw

我已完成以下设置:

运行docker compose的Jenkins环境,但我需要将环境变量传递到yml文件:

示例docker-compose.yml

version: '2'

services:  
  logon_server:
    build: .
    image: my_server:0.0.1
    ports:
      - "9200:9200"
    command: ${DOCKER_CMD_EXEC}
    networks:
      - my_ntwrk

networks:
  my_ntwrk:
当我在mac电脑上的shell提示符下运行以下脚本时,我可以传递不同的命令以执行,一切正常:

exec-tests.sh

#!/bin/bash

chmod 755 docker/exec-*.sh

# Setup env variables
export DOCKER_CMD_EXEC=/ci_e2e.sh

# Optional: record current versions
docker -v && docker-compose -v

echo `whoami` 

echo `sudo -E -u admin printenv`

# Build, deploy and run E2E test cases
sudo -E -u admin docker-compose up --no-color --abort-on-container-exit
当我在jenkins作业中运行脚本时,在“Build Environment”->“Execute Shell”->“Command”下,下面是我所说内容的图像:

我得到以下错误:

The DOCKER_CMD_EXEC variable is not set. Defaulting to a blank string
我试着以root用户和默认用户“admin”的身份运行它,这就是jenkins的运行方式。我试着让环境变量可继承,试着打印环境变量,一切看起来都很好

我可以通过解除DOCKER_CMD_EXEC的设置在mac上重新生成错误,但我不明白为什么会在jenkins发生这种情况

任何帮助都将不胜感激

谢谢

以下是我的解决方案:

Docker脚本:

#!/bin/bash
export COMPOSE_HTTP_TIMEOUT=120
export DOCKER_CMD_EXEC=/app/docker/ci_run.sh
export DOCKER_LINKED_CMD=/app/docker/ci_run.sh
export DOCKER_NODE_ENV=staging
export DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:=staging}
export DOCKER_RELOAD_DB=${PARAM_RELOAD_DB:=true}
export DOCKER_HTTP_PROXY=''

# Optional: record current versions
docker -v && docker-compose -v

# Startup container(s)
cat compose.yml | envsubst | docker-compose -f - up
compose.yml文件:

version: '2'

services:   
  app:
    build: .
    image: ${DOCKER_IMAGE_TAG}
    environment:
      - MONGODB_HOST=mongodb
      - NODE_ENV=${DOCKER_NODE_ENV}
      - HTTP_PROXY=${DOCKER_HTTP_PROXY}
    ports:
      - "8000:8000"
    command: ${DOCKER_CMD_EXEC}
    volumes:
      - /dev/shm:/dev/shm
    networks:
      - server-ntwk

networks:
  server-ntwk:
bash脚本和compose文件位于同一目录中:

./docker/exec-build.sh