当我使用docker run运行docker容器时
docker run -d --memory=100m --cpus=0.5 -e SECRENT_ENV=$SECRET_ENV -e name=name --network=nginx-proxy image-name
通过詹金斯的blueocean并在蓝色海洋中设置环境变量
SECRET_ENV=SECRET_DATA
将环境变量以纯文本格式提交给jenkinsfile中的回购。
如何将环境变量从主机(运行jenkins的主机)传递到docker run命令。
其他信息:
-在centos 7上运行
-尝试运行nodejs应用
-Jenkins本身在docker容器中运行
-尝试通过./bashrc export SECRET_ENV = secret_data
答案 0 :(得分:0)
首先,您可以通过Docker run命令传递主机环境变量。
export SECRENT_ENV=some-secret
在主机上导出ENV,或者您可以从〜/ .bashrc中使用它,因为您看起来还可以。
docker run --rm -it -e SECRENT_ENV=$SECRENT_ENV alpine ash -c "echo $SECRENT_ENV"
这里,问题是您在docker内部运行Jenkins ,因此容器的其余部分将只能使用Jenkins容器中定义的Environment变量。要将所有环境变量设置为Jenkins,您需要更新Jenkins run命令。
docker run --rm -it -v /home/centos/.bashrc:/root/.bashrc alpine ash -c "echo $USER"
这将返回主机用户名centos
,因此应避免这种情况,因为主机环境会覆盖Jenkins容器的所有环境变量。
因此,您只需要将所需的ENV传递给Jenkins,或者可以使用CSV input传递给Jenkins。
docker run --name jenkins -e SECRENT_ENV=123 -e SECRENT_ENV2=1234 -dit jenkins/jenkins
现在更新Jenkins文件中的ENV。
SECRET_ENV=${env.SECRET_ENV}
答案 1 :(得分:0)
您可以在Jenkins配置页面(http://localhost:8080/jenkins/configure)中创建一个环境变量,然后搜索环境变量。
并在Jenkins管道中添加所需的变量并使用,请参见以下内容:-