我在这里使用 postgresql image和 node official image和 我的docker-compose.yml文件看起来像 version: '2'services: postgres: restart: always image: sameersbn/postgresql:9.6-2 ports: - "5432:5432" environment: - DB_USER=shorturl
我的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时,我的日志看起来像
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时,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上的文档