Shell 将变量发送到docker容器以在脚本中使用
我正在管道的CI/CD中运行脚本。目标是使用字符串。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
当我得到那个结果时,我将它保存到一个变量中,并将结果保存在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做了一些逻辑处理,但基本上就是出错的时候。谢谢,我以前没有找到这个答案