[英]docker-compose build env not populated in docker image
用例是使用 gitlab-ci.yml 構建和鏡像並部署到 Rancher 2.5.5。 由於在我的情況下無法直接傳遞 envs,我正在嘗試使用docker-compose build將 envs 內置到 docker 圖像(接下來是開發/階段的事情,讓我們暫時離開它)。 docker-compose run --env-file 有效,但 docker-compose構建忽略環境。
任何建議將被認真考慮
PS 如果你知道從 gitlab-ci 以某種方式將 envs 傳遞給 rancher2 容器的方法,它也可以解決問題
我試過以下方法:
version: '3'
services:
testproject:
build:
context: .
env_file: .env-dev
image: example.registry/testimage:latest
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
沒有任何作用
我可以在注冊表和本地看到新圖像(當我在本地測試它時)但是當我運行容器時里面沒有環境
如果你想在構建階段設置 env 值,你可以使用 build-args 如下:
FROM ...
ARG SOME_ARG
ENV SOME_ENV=$SOME_ARG
然后,在你的 docker-compose.yml 中:
version: '3'
services:
testproject:
build:
context: .
args:
SOME_ARG: "SOME_VALUE"
env_file: .env-dev
image: example.registry/testimage:latest
但是請三思,您確定要在構建階段動態設置 ENV 變量嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.