【问题标题】:NODE_ENV not getting passed from ECS Fargate to React ApplicationNODE_ENV 没有从 ECS Fargate 传递到 React 应用程序
【发布时间】:2020-11-01 09:43:10
【问题描述】:

我有一个使用 Create-React-App 构建的 React 应用程序。我已经使用 GitHub Actions 设置了一个部署管道,因此当我提交分支“预生产”时,它将触发 Docker 构建,然后将构建放到 AWS。

这是 GitHub Actions .yml 的一部分:

  - name: Build and push image to Amazon ECR
    id: build-image
    env:
      ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
      ECR_REPOSITORY: application
      IMAGE_TAG: latest

    run: |
      # Build a docker container and
      # push it to ECR so that it can
      # be deployed to ECS.
      docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
      docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
      echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"

然后在我的 ECS 服务中,我运行指向此构建的任务,在该容器中,我传入环境变量,如下所示:

然后我在控制台中注销应用程序中的 NODE_ENV,由于某种原因一直说 production 而不是 development

console.log(process.env.NODE_ENV);

【问题讨论】:

  • 你之前把这个值作为生产放在哪里了?似乎有些东西压倒了它
  • 类似于 Dockerfile 中具有更高优先级的硬编码环境之类的东西?因为一般来说您访问 env var 的方式是正确的。
  • @ChrisWilliams 我没有在任何地方将其设置为生产,我在想'npm run build' 为我将它设置为生产?但我不确定。
  • @Marc Dockerfile 中有这一行,但我不确定这与它有什么关系ENV PATH /usr/src/app/node_modules/.bin:$PATH 除了没有提到ENV
  • 对不起。那就帮不了你了。

标签: reactjs amazon-web-services docker dockerfile amazon-ecs


【解决方案1】:

检查环境变量是否在某处硬编码,也值得尝试使用不同的环境变量值进行验证。

【讨论】:

  • 这在任何地方都没有硬编码,并且尝试使用不同的变量也不会产生影响,因为当前的变量甚至不起作用。
【解决方案2】:

我很确定所有节点文档都说您不能以任何方式修改 NODE_ENV,尤其是您尝试这样做的方式,它只能由构建过程设置

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 2023-01-27
    • 2022-10-28
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多