【问题标题】:Accessing PostgreSQL service on host from Node app in Docker container从 Docker 容器中的 Node 应用程序访问主机上的 PostgreSQL 服务
【发布时间】:2018-08-31 04:22:23
【问题描述】:

我在我的主机 (Mac) 上运行了一个 PostgreSQL 服务,我想从我的 Node 应用程序的 Docker 容器中连接到它。我知道有docker.for.mac.localhost,但第一步我想使用简单的方法,即将我的主机IP地址直接传递到容器中。但是,这并没有奏效,我不太确定自己做错了什么。我正在使用 Node pg 包连接到我的数据库。任何帮助都会很棒,谢谢!

docker-compose.yml

version: '2'
services:
  web:
    env_file:
      - .env
    build: .
    command: npm run watch
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - "8080:8080"
    environment:
      - NODE_ENV=${NODE_ENV}
      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASS}@${LOCAL_IP}:5432/${POSTGRES_DB}
      - PGHOSTADDR=${LOCAL_IP}
      - PGPORT=5432
      - PGDATABASE=${POSTGRES_DB}
      - PGUSER=${POSTGRES_USER}
      - PGPASSWORD=${POSTGRES_PASS}

Dockerfile

# pull node 9.4 as base
FROM node:9.4.0

# set working directory
WORKDIR /usr/src/app

# copy packages.json in
COPY package.json /usr/src/app
COPY package-lock.json /usr/src/app

RUN rm -rf node_modules

# run files
RUN npm install

# copy everything else in
COPY . /usr/src/app

# expoxe port
EXPOSE 8080

# starting task
CMD npm run watch

connection.js

const { Pool } = require("pg");

const pool = new Pool({
  user: process.env.PGUSER,
  host: process.env.PGHOSTADDR,
  database: process.env.PGDATABASE,
  password: process.env.PGPASSWORD,
  port: process.env.PGPORT
});

export = {
  query: (text: String, params: Object, callback: Function) => {
    console.log(pool);
    return pool.query(text, params, callback);
  }
};

这是错误

【问题讨论】:

  • 如果你已经在使用 docker 甚至 docker-compose,也可以将 postgresql 放入 docker 容器中。官方镜像好用,docker网络轻松连接你的容器
  • 连接失败的输出是什么?
  • @OkieOth 我发布了我从 Chrome 控制台收到的错误 - 我也会对此进行调查,但我也很好奇为什么这不起作用

标签: node.js postgresql docker


【解决方案1】:

我认为他们不在同一个网络上。从容器来看,本地 IP 是容器本身,而不是您的主机。 您应该尝试在 docker compose 上添加数据库,或者添加网络部分。

【讨论】:

  • 正确 - 在 Docker 容器中,我传入了主机的 IP 地址 PGHOSTADDR=${LOCAL_IP}
猜你喜欢
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2016-07-18
  • 2018-03-04
相关资源
最近更新 更多