Shell 将变量发送到docker容器以在脚本中使用

Shell 将变量发送到docker容器以在脚本中使用,shell,variables,docker,scripting,docker-compose,Shell,Variables,Docker,Scripting,Docker Compose,我正在管道的CI/CD中运行脚本。目标是使用字符串。 当我得到那个结果时,我将它保存到一个变量中,并将结果保存在dockerfile的yaml文件中 我希望将该变量从CI环境传递到docker compose容器中。所以,我试图像导出其他东西一样导出它,但它不起作用: ci/pdf/jenkins-changes.sh LOG="$(cat ".log")" export LOG 我添加了一个variables.env文件,如下所示: LOG=LOG 然后修改docker-compose.y

我正在管道的CI/CD中运行脚本。目标是使用字符串。
当我得到那个结果时,我将它保存到一个变量中,并将结果保存在dockerfile的yaml文件中

我希望将该变量从CI环境传递到docker compose容器中。所以,我试图像导出其他东西一样导出它,但它不起作用:

ci/pdf/jenkins-changes.sh
LOG="$(cat ".log")"
export LOG
我添加了一个variables.env文件,如下所示:

LOG=LOG
然后修改docker-compose.yaml以读取变量:

pdf:
图片:thisimage/这个
建造:
背景:/
dockerfile:./docker/dockerfile.name
args:
git_分支:${git_分支}
环境文件:
-变量.env
环境:
-LOG=${LOG}
卷数:
-do build:/src/do build

在最终运行docker容器的脚本中,我还 声明如下: 来自ubuntu:16.04作为pdf builder

ARG log
ENV log=${log}
RUN LOG=${log}
RUN export $LOG
然后,我运行script.sh,它需要变量,但是,它返回未绑定的变量并中断

LOG=${log}
echo ${LOG}

这个问题的答案是:

ci/pdf/jenkins-changes.sh 
LOG="$(cat ".log")"
export LOG
然后将其作为参数而不是变量传递:

pdf:
    image: thisimage/this
    build:
    context: ../
    dockerfile: ./docker/Dockerfile.name
    args:
        git_branch: ${GIT_BRANCH}
    env_file:
    - variables.env
    environment:
    - LOG=${LOG}
    volumes:
    - do-build:/src/do-build
然后,在dockerfile中调用并定义它

ARG log

这将使它保持全局性,以便任何脚本使用它

一旦放入env,您就不需要导出它,这里您正在做什么LOG=${LOG}?即使我想从shell脚本访问env file和aslo env variableNot,您也要传递它,因为在这之后,我运行make script.sh,脚本说找不到它。检查我关于env和argsYeah的回答,我刚刚添加了它作为编辑。脚本对var做了一些逻辑处理,但基本上就是出错的时候。谢谢,我以前没有找到这个答案