首页 > 解决方案 > 将环境变量传递给circleCI中的docker容器

问题描述

我在尝试为项目设置 circleCI 时遇到了一些困难。我有一个应用程序需要与几个自定义 docker 映像进行交互(并且需要连接到端口,这会阻止在主容器中运行自定义容器)。我想将 circleCI 环境变量CREDENTIALS(包含 gcloud 凭据)传递给其中一个 docker 映像的环境变量。由于那里不支持插值,我尝试使用参数,但仍然传递的只是参数的名称,而不是它的值。

的精简版config.yml是:

version: 2.1

orbs:
  gcp-cli: circleci/gcp-cli@1.3.0

jobs:
  test:
    parameters:
      gcloud_cred:
        type: env_var_name
        default: CREDENTIALS
    docker:
      - image: circleci/python:3.6.4
      - image: custom_image_1:latest
        environment:
          ENV: test
      - image: custom_image_2:latest
        name: database
        environment:
          GCLOUD_CREDENTIALS: << parameters.gcloud_cred >>

    working_directory: ~/app

    steps:
      - checkout
      - setup_remote_docker      
      - run:
          name: do the rest
          command: |
            sh do_all_stuff.sh
workflows:
  version: 2.1

  test:
    jobs:
      - test:
          gcloud_cred: CREDENTIALS

我尝试过其他组合,例如${CREDENTIALS}在工作流中使用和字符串类型参数,但每次在custom_image_2env 变量中GCLOUD_CREDENTIALS只有 value CREDENTIALS,我显然不想将 value 硬编码到配置中。

如果有人知道使这项工作的方法,或者能够传递价值的替代解决方法,将不胜感激。

标签: dockercircleci

解决方案


推荐阅读