0

我用 Node.js 和 postgresql 创建了我的反应应用程序,并部署在谷歌云中。我创建了一个 postgres 和 nodejs 的 docker 图像,并将图像上传到 docker hub。从 gcloud 我访问那些图像。

这是我的 docker-compose-production.yml 文件。

version: '2.0'
services:
  postgres:
    image : mycompany/myapp:pglatest
    restart : always
    volumes:
      - ./backdata/databackups:/var/lib/postgresql/backdata
    ports:
      - "5433:5432"

  backend:
    image: mycompany/myapp:nodelatest7
    command: npm run start
    ports:
      - "5001:5000"
    depends_on:
      - postgres
    environment:
      POSTGRES_URL: postgresql://postgres:root@postgres:5432/db_mydb 
      DEBUG: hms-backend:*

当我运行命令时

sudo docker-compose -f docker-compose-production.yml up --build -d

创建了 2 个图像。

之后我运行了tail命令

sudo docker-compose -f docker-compose-production.yml logs -t backend

我收到错误

后端_1 | 2018-09-15T09:12:18.926001351Z REST API 监听端口 5000
backend_1 | 2018-09-15T09:12:18.937246598Z 错误 { 错误:连接 ECONNREFUSED 192.168.80.2:5432
backend_1 | 2018-09-15T09:12:18.937268668Z 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
backend_1 | 2018-09-15T09:12:18.937280934Z 错误号:'ECONNREFUSED',
后端_1 | 2018-09-15T09:12:18.937283960Z 代码:'ECONNREFUSED',
后端_1 | 2018-09-15T09:12:18.937286817Z 系统调用:“连接”,
后端_1 | 2018-09-15T09:12:18.937289488Z 地址:'192.168.80.2',
后端_1 | 2018-09-15T09:12:18.937292260Z 端口:5432 }

如何解决这个问题呢

4

1 回答 1

0

对我来说,您的 postgres 网址错误:postgresql://postgres:root@postgres:5432/db_mydb

它应该是 postgresql://postgres:root@postgres: 5433 /db_mydb 因为 postgres “暴露”端口在 5433

嗯,我认为你应该在 docker-compose 中添加“container_name”

services:
  postgres:
     container_name: my_postgres  

并将此名称用作您的 postgres 的“地址”

postgresql://my_postgres:root@postgres:5433/db_mydb

于 2018-09-16T20:43:26.893 回答