f1ren2es
V2EX  ›  DevOps

请教: JenkinsFile 中如何正确设置环境变量传递给 Docker 容器

  •  1
     
  •   f1ren2es · Oct 19, 2018 · 4809 views
    This topic created in 2786 days ago, the information mentioned may be changed or developed.

    原本的想法是: 因为 Python 项目中需要设置一些敏感信息为环境变量, 在代码中使用 os.environ.get() 获取环境变量, 现在使用 JenkinsFile + Docker-Compose 实现自动化部署, 这些环境变量写入 DockerFile/Docker-Compose.yml 中不安全,想实现 JekinsFile 从 Jenkins 中读取这些变量传递给 Docker 容器, 但发现一些问题, 希望有老哥能够指点一下:

    • 原本是想在 Jenkins 项目设置中配置这些环境变量,SO 上说可以使用 enviject Plugin, 但 Jenkins 中只搜索到 enviject API, 似乎无效
    • 尝试从凭据中读取, 在 Jenkinsfile 中使用 credentials() 获取凭据中设置的 secret text, 但容器中似乎总是获取不到, e.g. 环境变量设置 mysql host 为 docker-compose 中的 services name, 但代码运行时获取到设置的默认值 localhost 并且报错无法连接到 localhost mysql socket. 尝试过在 vps 上手动 docker-compose up 启动容器并手动写入环境变量, 无此问题发生

    目前卡在这里了, 不知道是 Jenkis 抽风还是 Jenkinsfile 写的不对, 能否指点一下给小弟一点思路, 谢谢

    2 replies    2018-10-19 13:39:34 +08:00
    JASONWOOD
        1
    JASONWOOD  
       Oct 19, 2018
    jenkins pipeline
    JASONWOOD
        2
    JASONWOOD  
       Oct 19, 2018
    ignore it
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1075 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:20 · PVG 07:20 · LAX 16:20 · JFK 19:20
    ♥ Do have faith in what you're doing.