未在Docker映像中填充Docker-compose构建环境

c3frrgcw  于 2022-11-28  发布在  Docker
关注(0)|答案(1)|浏览(142)

用例是使用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

sgtfey8w

sgtfey8w1#

如果要在生成阶段设置env值,可以按如下所示使用生成参数:

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变量吗?

相关问题