【发布时间】:2019-03-29 22:03:44
【问题描述】:
我正在尝试对以前在 Heroku 上运行的 node.js 应用程序进行 dockerize,并使用 postgres 插件作为生产数据库。无法从容器连接到数据库。
Docker 文件
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm","start"]
Docker 编写文件
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
- "5432:5432"
env_file: .env
extra_hosts:
- "iondev:172.27.27.59"
错误
web_1 | {"level":30,"time":1553864230376,"msg":"Narrafy listening on port 5000","pid":16,"hostname":"961f47819c3e","v":1}
web_1 | {"level":50,"time":1553864230399,"msg":"Failed to connect to DB.","pid":16,"hostname":"961f47819c3e","v":1}
web_1 | {"level":50,"time":1553864230399,"msg":"Connection terminated unexpectedly","pid":16,"hostname":"961f47819c3e","type":"Error","stack":"Error: Connection terminated unexpectedly\n at Connection.con.once (/usr/src/app/node_modules/pg/lib/client.js:200:9)\n at Object.onceWrapper (events.js:313:30)\n at emitNone (events.js:106:13)\n at Connection.emit (events.js:208:7)\n at Socket.<anonymous> (/usr/src/app/node_modules/pg/lib/connection.js:130:10)\n at emitNone (events.js:111:20)\n at Socket.emit (events.js:208:7)\n at endReadableNT (_stream_readable.js:1064:12)\n at _combinedTickCallback (internal/process/next_tick.js:139:11)\n at process._tickCallback (internal/process/next_tick.js:181:9)","v":1}
【问题讨论】:
-
你能分享你从你的节点应用和你的 Dockerfile 得到的错误信息吗?
-
在容器
docker run -it --entrypoint=bash <imagename>上获取一个shell 并尝试a) 检查目标主机/端口是否可以从容器内部访问:nc -zv -w 2 <db-host> 3306b) 尝试手动连接它;mysql -u <username> -p<password> -p <databasename>;您将需要容器上的相应工具
标签: docker