docker - 如何在Circle CI中设置环境变量以在应用程序中用作process.env.FOO

标签 docker circleci

例如,我已经设置name: FOO value: 'bar'

我已经验证了键值有效。因为有效的是:

jobs:
  build:
    docker: 
      - image: circleci/node:10.17.0
    steps:
      - run: |
          node something $FOO

但是,以下操作无效:

现在,当我部署并尝试在我的应用程序中使用它时,它会返回undefined:

console.log(process.env.FOO); // returns undefined

我尝试在config.yml文件的'environment'键下设置它:
jobs:
  build:
    docker: 
      - image: circleci/node:10.17.0
      environment:
        - FOO # note, don't use $FOO
    steps:
      - run: |
        node something $FOO
        ssh $MACHINE -- 'cd /home/ && docker build -t myApp . docker restart myApp'

但是仍然没有变化。

我是否应该在ssh命令中将变量传递给构建脚本?

有任何想法吗?

根据Delena的提示进行更新

./circle-ci/config.yml保留为:
jobs:
  build:
    docker: 
      - image: circleci/node:10.17.0
      environment:
        FOO: $FOO

然后在docker-compose文件中:
myApp:
  environment:
    - FOO

构建为绿色时将接受答案

最佳答案

似乎您正在尝试从在Docker容器中运行的应用访问环境变量,但没有在容器中设置环境变量。

如果是这种情况,您可以 checkout How to set an environment variable in a running docker container,但是看起来您必须停止容器并使用环境变量重新启动它。

您可以执行以下操作:
ssh $MACHINE -- 'cd /home/ && docker build -t myApp && docker stop myApp && docker run -e "FOO=$FOO"'
另外,请查看docker run文档中的ENV (environment variables)部分。

关于docker - 如何在Circle CI中设置环境变量以在应用程序中用作process.env.FOO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61309083/

相关文章:

github - 如何在 CircleCI 中使用私有(private)存储库?

docker - 被 `no space left on device`异常所迷惑

ruby-on-rails - CircleCI 连接上的 Rails Fake-S3 被拒绝

python - 在从 CircleCI 启动的 Dataflow/Apache-beam 作业中找不到库

circleci - 更改 CircleCI 上的用户

使用相对路径时,Docker 卷的无效字符

docker - 如何正确关闭这些 k8 容器?

docker - 如何在启动/运行文件之前将文件复制到Docker容器?

docker - Jenkins Slave JNLP 连接被终止