首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用另一层节点表示图像扩展prisma Docker图像

用另一层节点表示图像扩展prisma Docker图像
EN

Stack Overflow用户
提问于 2020-03-21 07:36:21
回答 2查看 420关注 0票数 0

我从dockerhub获得了prisma服务器映像,它是

代码语言:javascript
复制
prismagraphql/prisma:1.34

为了在端口4466上运行,上面的prisma映像需要数据库连接字符串,并使用如下所示的docker-复合文件作为环境变量传递。

代码语言:javascript
复制
prisma:
   image: prismagraphql/prisma:1.34   
   ports:
     - "4466:4466"     
   environment:
     PRISMA_CONFIG: |
       port: 4466
       databases:
         default:
           connector: mongo
           uri: mongodb://mongodb   

我正在尝试扩展上面的prisma服务器映像,如下所示。

代码语言:javascript
复制
FROM prismagraphql/prisma:1.34

RUN apk add  --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.7/main/ nodejs=8.9.3-r1

WORKDIR /project

COPY . .

# To handle 'not get uid/gid' error in alpine linux set unsafe-perm true
RUN apk update && apk upgrade \
    && npm config set unsafe-perm true \
    && npm install --g yarn \
    && npm install -g prisma \
    && yarn install \
    && chmod +x ./entrypoint.sh \
    && chmod +x ./wait-for-it.sh

EXPOSE 4466 4000

ENTRYPOINT ["./entrypoint.sh"]

entrypoint.sh文件如下所示

代码语言:javascript
复制
#!/bin/bash

# wait for the prisma service to start.
# then run prisma deploy (more on that later)
./wait-for-it.sh prisma:4466 -- prisma deploy

# go into the project...
cd /project

# run an npm command to use nodemon to start/watch the server
npm run start

在上面的Dockerfile中

  • 我试着在现有的prisma映像上安装nodejs应用程序。
  • 这个nodejs应用程序称为prisma。nexus需要在localhost上连接到prisma :4466,nexus运行在端口4000上。

当我运行下面的图像时,我会得到这个错误。nodejs应用程序无法连接到prisma

代码语言:javascript
复制
Could not connect to server at http://localhost:4466. Please check if your server is running.

最后,我像下面这样运行扩展映像

代码语言:javascript
复制
 mongodb:
   image: mongo:4.2
   container_name: mongodb
   volumes:
     - ./mongo-volume:/data/db
   ports:
     - "27017:27017"
   networks:
     - prisma

  prisma:
   image: extended-image-here:1.0
   container_name: prisma-server
   restart: always
   ports:
     - "4466:4466"
     - "4000:4000"
   environment:
     PRISMA_CONFIG: |
       port: 4466
       databases:
         default:
           connector: mongo
           uri: mongodb://mongodb

我在这干嘛?请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2020-03-21 10:38:42

我想它不起作用的原因是因为图像棱镜图l/prisma:1.34有一个入口点,在Dockerfile的末尾还有另一个入口点。Docker只接受Dockerfile中的一个入口点.

票数 0
EN

Stack Overflow用户

发布于 2020-03-21 15:30:37

首先:在您的代码中,您将MongoDB容器放置在一个名为prisma的特定命名网络上,但是您不会对prisma容器做同样的事情。使用will时,同一覆盖网络上的容器按名称解析,但请求只有在同一网络上的容器之间才会被路由。

下一步:您不应该在同一个容器中运行两个服务器。最好不要在prisma图像上构建应用程序,而是在高山或ubuntu (或其他任何东西)之上构建应用程序。它应该连接到prisma服务器正在运行的另一个容器。在评论中,你说你真的很想这么做,但你真的不应该这么做。在客户端的服务器上运行一个组合配置并不比在一个容器中运行一个配置要困难得多,但是在一个容器中运行两个服务器要困难得多。

最后:本地主机引用(您说的关系?)应该以某种方式进行配置。找出方法,并让它处理类似于“http://prisma:4466”之类的内容。这样,您将有3个容器-- mongodb、prisma和您自己的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60785501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档