【问题标题】:How do I connect to a production database from a Docker container?如何从 Docker 容器连接到生产数据库?
【发布时间】: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 &lt;imagename&gt; 上获取一个shell 并尝试a) 检查目标主机/端口是否可以从容器内部访问:nc -zv -w 2 &lt;db-host&gt; 3306 b) 尝试手动连接它; mysql -u &lt;username&gt; -p&lt;password&gt; -p &lt;databasename&gt;;您将需要容器上的相应工具

标签: docker


【解决方案1】:

如果没有 dockerfile,则无法调试此问题。最有可能检查您的数据库信用并确保您将它们作为 ENV 变量传递。

您可以使用检查日志 docker logs 。

或者使用 docker exec 命令来检查你的环境变量。

【讨论】:

  • 在我的 .env 文件中:我有类似 DATABASE_URL=postgresql://172.27.27.59:5432/postgres
猜你喜欢
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 2022-11-12
  • 2023-04-02
相关资源
最近更新 更多