用例是使用gitlab-ci.yml构建和映像并部署到Rancher 2.5.5。由于在我的情况下不能直接传递envs,我尝试使用docker-compose build将envs内置到docker映像中(接下来是dev/stage,让我们暂时离开它)。docker-composerun--env-file工作正常,但docker-composebuild忽略envs。
如有任何建议,我们将不胜感激
另外,如果您知道如何从gitlab-ci将envs传递到rancher2容器,也可以解决此问题
我尝试了以下方法:
- 将其设置为Dock合成
version: '3'
services:
testproject:
build:
context: .
env_file: .env-dev
image: example.registry/testimage:latest
- 在gitlab-ci中设置
variables:
IMAGE: "$CI_REGISTRY_IMAGE:latest"
build-image:
stage: build
allow_failure: false
tags:
- docker
services:
- docker:dind
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- docker-compose --env-file .env-dev build
- docker-compose push
deploy:
stage: deploy
image: kpolszewski/rancher2-gitlab-deploy
tags:
- docker
script:
- upgrade --cluster $CLUSTER --environment $ENV --stack $NAMESPACE --service $SERVICE --new-image $IMAGE
- 在Dockerfile入口点中查找源代码
- 在. env文件中设置
什么都不管用
我可以在注册表和本地(当我在本地测试它时)中看到新图像,但在运行container时内部没有env
1条答案
按热度按时间sgtfey8w1#
如果要在生成阶段设置env值,可以按如下所示使用生成参数:
然后,在您的docker-compose.yml中:
但是请三思,您确定要在构建阶段动态设置ENV变量吗?