如何通过在一个单一的码头工人容器中运行Prisma的服务器环境变量

时间:2019-01-30 10:09:15

标签: docker yaml graphql prisma prisma-graphql

包含在文档中的泊坞窗,compose.yml例子的伟大工程,为当地的发展,人们可能有多个服务与搬运工人运行:

version: '3'
services:
  prisma:
    image: prismagraphql/prisma:__LATEST_PRISMA_VERSION__
    restart: always
    ports:
    - "4466:4466"
    environment:
      PRISMA_CONFIG: |
        managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__
        port: __YOUR_PRISMA_SERVER_PORT__
        databases:
          default:
            connector: __YOUR_DATABASE_CONNECTOR__
            migrations: __ENABLE_DB_MIGRATIONS__
            host: __YOUR_DATABASE_HOST__
            port: __YOUR_DATABASE_PORT__
            user: __YOUR_DATABASE_USER__
            password: __YOUR_DATABASE_PASSWORD__
  mongo:
    image: mongo:__LATEST_PRISMA_VERSION__
    restart: always
    ports:
    - "27017:27017"
    volumes:
      - mongo:/var/lib/mongo

但是,在生产环境中,容器中没有运行数据库。事实上,我们正在使用DBaaS来承载我们分贝。我们正在使用DB是蒙戈。

因此,对于Prisma服务器,我们需要从docker-compose up切换到docker run...

我们面临的问题是如何设置Prisma容器运行所需的所有环境变量。

我看到两个可能的选择:

  1. 将单个变量传递给容器
  2. 仅向下传递指向yml配置文件的变量PRISMA_CONFIG_PATH,例如prisma_config.yml

选项1

在docker-compose.yml中,PRISMA_CONFIG变量作为多行字符串传递。

搜索互联网我发现,单个变量的对应的列表应该是:

      PORT: $PORT
      SCHEMA_MANAGER_SECRET: $SCHEMA_MANAGER_SECRET
      SCHEMA_MANAGER_ENDPOINT: $SCHEMA_MANAGER_ENDPOINT
      SQL_CLIENT_HOST_CLIENT1: $SQL_CLIENT_HOST
      SQL_CLIENT_HOST_READONLY_CLIENT1: $SQL_CLIENT_HOST
      SQL_CLIENT_HOST: $SQL_CLIENT_HOST
      SQL_CLIENT_PORT: $SQL_CLIENT_PORT
      SQL_CLIENT_USER: $SQL_CLIENT_USER
      SQL_CLIENT_PASSWORD: $SQL_CLIENT_PASSWORD
      SQL_CLIENT_CONNECTION_LIMIT: 10
      SQL_INTERNAL_HOST: $SQL_INTERNAL_HOST
      SQL_INTERNAL_PORT: $SQL_INTERNAL_PORT
      SQL_INTERNAL_USER: $SQL_INTERNAL_USER
      SQL_INTERNAL_PASSWORD: $SQL_INTERNAL_PASSWORD
      SQL_INTERNAL_DATABASE: $SQL_INTERNAL_DATABASE
      CLUSTER_ADDRESS: $CLUSTER_ADDRESS
      SQL_INTERNAL_CONNECTION_LIMIT: 10
      CLUSTER_PUBLIC_KEY: $CLUSTER_PUBLIC_KEY
      BUGSNAG_API_KEY: ""
      ENABLE_METRICS: "0"
      JAVA_OPTS: "-Xmx1G"

docker

所有这些var都在环境文件中设置

docker run -p 4466:4466 --env-file prisma.env prismagraphql/prisma:1.25

它们似乎可以很好地用于SQL数据库,但不适用于Mongo。

使用Mongo时,我设置的值错误或变量名不同。

选项2

在运行容器时传递一个像PRISMA_CONFIG_PATH=prisma.config.yml这样的单个环境变量:

docker run -p 4466:4466 -e PRISMA_CONFIG_PATH=prisma.config.yml prismagraphql/prisma:1.25

我遇到以下错误 Exception in thread "main" java.lang.RuntimeException: Unable to load Prisma config: java.io.FileNotFoundException: prisma_config.yml (No such file or directory)

我不知道什么是对PRISMA泊坞窗图像的工作目录。我想这将解决这个问题。

编辑

我能够使其与Option#2一起使用

docker run \
-e PRISMA_CONFIG_PATH="/prisma.yml" \
-v "$(pwd)/env/prisma_config.yml":"/prisma.yml" \"  \
-p 4466:4466 \
prismagraphql/prisma:1.25

prisma_config.yml

port: 4466
databases:
  default:
    connector: mongo
    uri: __YOUR_MONGO_URI__
    database: __YOUR_MONGO_DB__

0 个答案:

没有答案