簡體   English   中英

docker-compose 構建環境未填充在 docker 圖像中

[英]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 容器的方法,它也可以解決問題

我試過以下方法:

  • 設置在 docker-compose
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文件中設置

沒有任何作用

我可以在注冊表和本地看到新圖像(當我在本地測試它時)但是當我運行容器時里面沒有環境

如果你想在構建階段設置 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM