Postgres在docker组成后立即关机?

时间:2017-04-28 14:30:58

标签: 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 

1 个答案:

答案 0 :(得分:0)

在网络和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

上的文档