prisma 容器中的 AWS ECS 错误 - 环境变量 PRISMA_CONFIG

Posted

技术标签:

【中文标题】prisma 容器中的 AWS ECS 错误 - 环境变量 PRISMA_CONFIG【英文标题】:AWS ECS error in prisma container - environment variable PRISMA_CONFIG 【发布时间】:2020-01-17 14:28:52 【问题描述】:

我是 AWS 新手,我正在尝试使用 ECR 和 ECS 在 AWS 上部署我的本地 Web 应用程序,但在运行集群时卡住了,它会在 prisma 容器中引发有关 PRISMA_CONFIG 环境变量的错误。

在我的本地环境中,我正在使用 docker 使用 nodejs、prisma 和 mongodb 构建应用程序,它工作正常。

现在在 ECS 上,我创建了一个任务定义,对于 prisma 容器,我尝试从本地 docker-compose.yml 文件中复制 yml 配置以使其工作。

有一个名为“ENVIRONMENT”的字段,我在环境变量中输入了值,它只是不工作并在集群运行时抛出错误,然后任务停止。

yml是多行的,但是输入框只支持字符串

变量键是 PRISMA_CONFIG 以下是我已经尝试过的值

| port: 4466\n databases:\n default:\n connector: mongo\n uri: mongodb://prisma:prisma@mongo\n
| \nport: 4466 \ndatabases: \ndefault: \nconnector: mongo \nuri: mongodb://prisma:prisma@mongo
|\nport: 4466\n databases:\n default:\n connector: mongo\n uri: mongodb://prisma:prisma@mongo
\nport: 4466\n databases:\n default:\n connector: mongo\n uri: mongodb://prisma:prisma@mongo
port: 4466\n databases:\n default:\n connector: mongo\n uri: mongodb://prisma:prisma@mongo\n

和错误

Exception in thread "main" java.lang.RuntimeException: Unable to load Prisma config: java.lang.RuntimeException: No valid Prisma config could be loaded.
expected a comment or a line break, but found p(112)
expected chomping or indentation indicators, but found \(92)

我希望所有容器都能正常运行,但实际结果是容器运行一分钟后停止。

请为此提供帮助。 或建议其他方式部署到 AWS?

非常感谢。

【问题讨论】:

如果您在 AWS 中的设置允许您添加配置文件,您也可以传入一个 yml 配置文件并在 PRISMA_CONFIG_PATH 环境变量的撰写文件中引用它。以下教程适用于 Dokku 部署,但对于遇到此问题或类似问题的任何人可能会有有用的信息。它描述了 Prisma 的 PRISMA_CONFIG_PATH 环境变量的使用:prisma.io/tutorials/deploy-prisma-to-dokku-ct15 看起来也不错!!,谢谢! 【参考方案1】:

我一直在寻找类似的解决方案来加载不带多行字符串的 prisma 配置。

有些存储库在没有 prisma 配置的情况下单独加载 prisma 环境变量:

查看此存储库,例如: https://github.com/akoenig/prisma-docker-compose/blob/master/.prisma.env

这里 akoenig 使用 env_file 使用以下环境变量。所以,我假设你可以分别传入这些环境变量来实现 prisma 正在寻找的东西。

# CONTENTS OF env_file

PORT=4466
SQL_CLIENT_HOST_CLIENT1=database
SQL_CLIENT_HOST_READONLY_CLIENT1=database
SQL_CLIENT_HOST=database
SQL_CLIENT_PORT=3306
SQL_CLIENT_USER=root
SQL_CLIENT_PASSWORD=prisma
SQL_CLIENT_CONNECTION_LIMIT=10
SQL_INTERNAL_HOST=database
SQL_INTERNAL_PORT=3306
SQL_INTERNAL_USER=root
SQL_INTERNAL_PASSWORD=prisma
SQL_INTERNAL_DATABASE=graphcool
CLUSTER_ADDRESS=http://prisma:4466
SQL_INTERNAL_CONNECTION_LIMIT=10
SCHEMA_MANAGER_SECRET=graphcool
SCHEMA_MANAGER_ENDPOINT=http://prisma:4466/cluster/schema
#CLUSTER_PUBLIC_KEY=
BUGSNAG_API_KEY=""
ENABLE_METRICS=0
JAVA_OPTS=-Xmx1G

这是一个 mysql 数据库。您需要对其进行定制以适合您的价值观。但理论上你应该能够将这些变量一一传递到 AWS 的 GUI 中的单个变量中。

我也在 Prisma Slack 频道上问过这个问题,正在等待看看他们是否有其他建议:https://prisma.slack.com/archives/CA491RJH0/p1569689413383000

告诉我进展如何。

【讨论】:

【参考方案2】:

这里不是专家,但是,您是否设置了环境变量 PRISMA_API_MANAGEMENT_SECRET,您会在配置 Fargate 实例时定义秘密。

看看下面的文章

https://www.prisma.io/tutorials/deploy-prisma-to-aws-fargate-ct14

【讨论】:

以上是关于prisma 容器中的 AWS ECS 错误 - 环境变量 PRISMA_CONFIG的主要内容,如果未能解决你的问题,请参考以下文章

ECS 任务。如何在容器中使用 AWS CLI

在 AWS ECS Fargate 中,任务内无法进行容器间连接

AWS ECS Fargate ALB 错误(请求超时)

从AWS ECS单独帐户中的私有注册表中提取容器

通过 AWS ECS 在一个 EC2 实例中的多个 docker 容器

如何在 AWS ECS 中重启容器?