gpt4 book ai didi

docker - 在 Docker-Compose 和 GitLab-CI 之间共享环境变量

转载 作者:行者123 更新时间:2023-12-02 18:27:13 31 4
gpt4 key购买 nike

注意:我在以下配置文件中省略了一些细节、阶段和设置,以使帖子更短,问题更“可读”。如果您认为缺少必要的细节,请发表评论,我会(重新)添加它们。
现在,考虑一个 docker-compose 项目,由以下配置描述,

# docker-compose.yml
version: '3'

services:
service_1:
build: ./service_1
image: localhost:8081/images/name_of_service_1
container_name: name_of_service_1
service_2:
build: ./service_2
image: localhost:8081/images/name_of_service_2
container_name: name_of_service_2
然后,在项目的 git 存储库中,我们有另一个文件,用于 GitLab 持续集成配置,
# .gitlab-ci.yml
image: docker:latest

stages:
- build
- release

Build:
stage: build
script:
- docker-compose build
- docker-compose push

# Release by re-tagging some specific (not all) images with version num
Release:
stage: release
script:
- docker pull localhost:8081/images/name_of_service_1
- docker tag localhost:8081/images/name_of_service_1 localhost:8081/images/name_of_service_1:rel-18.04
现在,这一切正常,但我发现我必须在两个文件中复制图像名称的方式令人沮丧。这里的挑战(在我自己看来)是发布阶段不会发布属于组合的所有图像,因为有些是纯粹用于测试的纯模拟/虚拟图像。因此,我需要单独标记/推送图像和容器。
我希望只能定义一次图像名称 : 我试过介绍 .env文件,由 docker-compose.yml 自动导入,
# .env
GITLAB=localhost:8081/images
SERVICE_1=name_of_service_1
SERVICE_2=name_of_service_2
这让我更新 docker-compose.yml使用这些变量并写入 image: "${GITLAB}/${PARSER_NAME}"与上面的原始文件相反。但是,我无法将这些变量导入 gitlab-ci.yml ,因此需要复制它们。
有没有简单的方法可以制作 docker-compose.yml .gitlab-ci.yml 分享一些(环境)变量?

最佳答案

我不确定你的问题是什么。那么您的项目根目录中有一个 .env 文件,其中包含您需要在发布作业中设置的所有变量?你为什么不像这样加载它们:

script:
- source ./env
- docker pull "${GITLAB}/${SERVICE_1}"
- docker tag "${GITLAB}/${SERVICE_1}" "${GITLAB}/${SERVICE_1}:rel-18.04"

关于docker - 在 Docker-Compose 和 GitLab-CI 之间共享环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59322815/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com