我需要通过 gitlab-ci 中的 ssh 将 env 变量传递给 docker
Posted
技术标签:
【中文标题】我需要通过 gitlab-ci 中的 ssh 将 env 变量传递给 docker【英文标题】:I need to pass an env variable to docker through ssh from gitlab-ci 【发布时间】:2021-11-11 20:40:23 【问题描述】:从我的 gitlab-ci 中,我需要将带有 spring 配置文件的环境变量传递给 docker compose。这样的变量是为我们部署的每个服务器环境定义的。
所以,在我的 gitlab-ci 中,我有这个:
.deploy_template: &deploy_template
script:
- echo $ENV_SPRING_PROFILES
# start containers
- $SSH_COMMAND user@$CI_ENVIRONMENT_URL "cd $REMOTE_DEPLOY_DIR/docker && SPRING_ACTIVE_PROFILES=$ENV_SPRING_PROFILES && DOCKER_HOST=tcp://localhost:2375 && docker-compose up -d"
deploy_811AC:
<<: *deploy_template
stage: deploy
when: manual
only:
- /^feature.*$/
- /^fix.*$/
environment:
name: ccvli-ecp626
url: 10.135.XXX.XXX
variables:
ENV_SPRING_PROFILES: "mock"
当我运行跑步者时,我可以看到 - echo $ENV_SPRING_PROFILES 变量的值。但是,它似乎没有在 SSH 命令中被替换,因为 docker-compose 说变量 SPRING_ACTIVE_PROFILES 是空的。
这正在成为一种噩梦,所以欢迎提供任何线索。
提前致谢
【问题讨论】:
【参考方案1】:我对gitlab ci没有太多经验,但我认为“声明”变量的方式不是“=”而是这样:
variables:
SPRING_ACTIVE_PROFILES: $SPRING_ACTIVE_PROFILES
script:
...
- $SSH_COMMAND user@$CI_ENVIRONMENT_URL "cd $REMOTE_DEPLOY_DIR/docker && $ENV_SPRING_PROFILES && DOCKER_HOST=tcp://localhost:2375 && docker-compose up -d"
一旦在第一个块上声明了它,你就可以开始在代码中使用它了:)
【讨论】:
您好,感谢您的回答,但不,它们是不同的东西。我声明的第一个变量是一个 gitlab 变量,它将包含一个值。第二个声明将成为我正在部署的服务器中的 unix 环境变量键,因此我需要传递给这样的变量,即我在 gitlab 变量中首先声明的值(是取决于我所在环境的动态值部署。以上是关于我需要通过 gitlab-ci 中的 ssh 将 env 变量传递给 docker的主要内容,如果未能解决你的问题,请参考以下文章