node.js - docker compose up 后 Postgres 立即关闭?

标签 node.js postgresql docker docker-compose dockerfile

这里我用的是postgresql imagenode official image和 我的 docker-compose.yml 文件看起来像

version: '2'
services:
  postgres:
    restart: always
    image: sameersbn/postgresql:9.6-2
    ports:
      - "5432:5432"
    environment:
      - DB_USER=shorturl
      - DB_PASS=shorturl
      - DB_NAME=shorturl
  web:
    build: .
    ports:
     - "4000:4000"
    volumes:
     - .:/shortlr
    depends_on:
     - postgres
    command: ["./wait-for-it.sh","postgres:5432", "--", "npm", "start"]

当我运行 docker-compose up 时,我的日志看起来像

shubham@shuboy2014:~/shortlr$ docker-compose up
Recreating shortlr_postgres_1 ... 
Recreating shortlr_postgres_1 ... done
Recreating shortlr_web_1 ... 
Recreating shortlr_web_1 ... done
Attaching to shortlr_postgres_1, shortlr_web_1
postgres_1  | Initializing datadir...
web_1       | wait-for-it.sh: waiting 15 seconds for postgres:5432
postgres_1  | Initializing certdir...
postgres_1  | Initializing logdir...
postgres_1  | Initializing rundir...
postgres_1  | Setting resolv.conf ACLs...
postgres_1  | Creating database user: shorturl
postgres_1  | Creating database: shorturl...
postgres_1  | ‣ Granting access to shorturl user...
postgres_1  | Starting PostgreSQL 9.6...
postgres_1  | LOG:  database system was shut down at 2017-04-28 14:23:20 UTC
postgres_1  | LOG:  MultiXact member wraparound protections are now enabled
postgres_1  | LOG:  autovacuum launcher started
postgres_1  | LOG:  database system is ready to accept connections
postgres_1  | LOG:  incomplete startup packet
web_1       | wait-for-it.sh: postgres:5432 is available after 2 seconds
web_1       | npm info it worked if it ends with ok
web_1       | npm info using npm@4.2.0
web_1       | npm info using node@v7.9.0
web_1       | npm info lifecycle shortlr@0.0.5~prestart: shortlr@0.0.5
web_1       | npm info lifecycle shortlr@0.0.5~start: shortlr@0.0.5
web_1       | 
web_1       | > shortlr@0.0.5 start /shortlr
web_1       | > node server.js
web_1       | 
web_1       | Listening on http://localhost:4000/
web_1       | Unhandled rejection SequelizeBaseError: connect ECONNREFUSED 127.0.0.1:5432
web_1       |     at /shortlr/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:98:20
web_1       |     at Connection.<anonymous> (/shortlr/node_modules/pg/lib/client.js:186:5)
web_1       |     at emitOne (events.js:96:13)
web_1       |     at Connection.emit (events.js:191:7)
web_1       |     at Socket.<anonymous> (/shortlr/node_modules/pg/lib/connection.js:86:10)
web_1       |     at emitOne (events.js:96:13)
web_1       |     at Socket.emit (events.js:191:7)
web_1       |     at emitErrorNT (net.js:1283:8)
web_1       |     at _combinedTickCallback (internal/process/next_tick.js:80:11)
web_1       |     at process._tickCallback (internal/process/next_tick.js:104:9)

当我运行 docker-compose up 时,postgresql 立即关闭,我们将不胜感激任何有用的答案。

shubham@shuboy2014:~/shortlr$ docker-compose ps
       Name                     Command               State           Ports          
------------------------------------------------------------------------------------
shortlr_postgres_1   /sbin/entrypoint.sh              Up      0.0.0.0:5432->5432/tcp 
shortlr_web_1        ./wait-for-it.sh postgres: ...   Up      0.0.0.0:4000->4000/tcp 

最佳答案

像这样在您的网站和 postgres 图像之间添加一个链接:

version: '2'
services:
  postgres:
    restart: always
    image: sameersbn/postgresql:9.6-2
    ports:
      - "5432:5432"
    environment:
      - DB_USER=shorturl
      - DB_PASS=shorturl
      - DB_NAME=shorturl
  web:
    build: .
    ports:
     - "4000:4000"
    volumes:
     - .:/shortlr
    depends_on:
     - postgres
    links:
     - postgres
    command: ["./wait-for-it.sh","postgres:5432", "--", "npm", "start"]

尽管您应该改用网络,因为链接是一个遗留选项。阅读网络文档here

关于node.js - docker compose up 后 Postgres 立即关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43682666/

相关文章:

c++ - nodejs的内存分布

node.js - 无法使 Sequelize 验证工作

javascript - 如何解密 node.js 中使用 Rijndael-256 加密的消息?

sql - 转换为双引号类型的不一致

python - 连接时出现操作错误 - Psycopg2

Docker 配置/ secret 始终是用户/组可写的

node.js - 如何将 JavaScript 对象转换为 MongoDB BSON 对象?

Postgresql:不断增长的列表的总和

docker - Buildmaster 不监听端口

docker - 如何从 Apache Kafka 到 Confluent Platform?