【问题标题】:How can I pass Jenkins environment variables to docker container?如何将 Jenkins 环境变量传递给 docker 容器?
【发布时间】:2019-04-10 20:48:53
【问题描述】:

我正在使用 Jenkins 管道构建和部署一个 docker 容器。

我想做的是将Jenkins环境变量传递给docker容器。

查看截图。

我在 Jenkins 上定义了环境变量。

我使用以下命令检查 docker 容器环境变量

- docker exec -it docker_id bash (get into the docker)
- printenv (print environment variables)

我想查看 docker 容器中的 Jenkins 环境变量。

这可能吗?如果是这样,请告诉我如何做到这一点。

提前致谢!

【问题讨论】:

  • 可以更新您的 Jenkinsfile 示例吗?

标签: docker jenkins environment-variables devops


【解决方案1】:

您可以在 .env 文件中设置所有变量,并在 docker 运行您的容器时将其提供给:

TBS_END_POINT=http://192.168.82.2:2020/QWEr
MONGO_HOST=172.17.0.3
MONGO_PORT=27017
REPLICA_SET=replicaset
API_PORT=3001
REDIS_PORT=4432
NODE_ENV=development

然后当你想运行你的容器时说:

docker run --env-file .env MyImage

【讨论】:

    【解决方案2】:

    你试过了吗

    docker 运行 -e

    https://docs.docker.com/engine/reference/run/#env-environment-variables

    $ export today=Wednesday
    $ docker run -e "deep=purple" -e today --rm alpine env
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    HOSTNAME=d2219b854598
    deep=purple
    today=Wednesday
    HOME=/root
    

    $ docker run -d --name tst -e TESTME=YES busybox tail -f /dev/null
    55a3fe206588a8030365df30a670ca89a50c54816d044184d5870a4a76ce8199
    $ docker exec -it tst sh
    / # echo $TESTME
    YES
    / #
    

    【讨论】:

    • 感谢您的回答,@Moisei。我也试过了,它奏效了。但是在构建 docker 容器时,我需要设置大量变量。我想由 Jenkins 设置它们,因为我不想将它们放在我的项目源中。
    • 您可以在管道中使用自定义步骤,将所有环境保存到文件中,然后使用 --env-file 选项。它会工作吗?
    【解决方案3】:

    尝试在 Docker 终端中运行 docker-machine env 以获取所有环境变量及其值的列表。

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 2015-08-10
      • 2015-09-18
      • 2022-01-16
      • 2021-06-07
      • 2020-02-23
      • 2021-06-21
      • 2021-06-25
      • 2017-09-18
      相关资源
      最近更新 更多