经济拒绝 127.0.0.1:5432
ECONNREFUSED 127.0.0.1:5432
我是 node、nest 和 docker 的初学者,但不知何故我被分配了一份工作来 docker 化所有现有的 node js 应用程序。
当我尝试将 Postgres 添加到 docker 时,我遵循了其中一个 youtube tutorial and successfully deployed the basic hello world via docker but in the next youtube tutorial 我在连接到 Postgres 时遇到了一些问题。
我在 mac 上使用 docker 桌面。
这是我的docker-compose.yml
文件代码片段
version: "3.9" # optional since v1.27.0
services:
api:
build:
dockerfile: Dockerfile
context: .
depends_on:
- postgres
environment:
DATABASE_URL: postgres://user:password@postgres:5432/db
NODE_ENV: developement
PORT: 3000
ports:
- "8080:3000"
postgres:
image: postgres:14.0
ports:
- "35000:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: db
这是整个错误日志
本项目
感谢您的提前帮助:)
您的问题是 DATABASE_URL
中的拼写错误。在 code 中连接数据库使用 DATABSE_URL
字,但在 docker-compose 中使用 DATABASE_URL
.
您应该将 url: process.env.DATABSE_URL
更改为 url: process.env.DATABASE_URL
确保 docker-compose.yml
中的连接字符串正确。只需传递主机、端口、用户并单独传递,让 TypeOrm
处理连接。
// app.module.ts
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.POSTGRES_HOST,
port: process.env.POSTGRES_PORT,
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DB,
})
还有你的docker-compose.yml:
# docker-compose.yml
version: '3.9'
services:
api:
build:
dockerfile: Dockerfile
context: .
depends_on:
- postgres
environment:
- POSTGRES_HOST=postgres
- POSTGRES_PASSWORD=promo-pass
- POSTGRES_USER=promo-user
- POSTGRES_DB=promo-api-db
- POSTGRES_PORT=5432
postgres:
container_name: postgres
image: postgres
environment:
POSTGRES_USER: promo-user
POSTGRES_PASSWORD: promo-pass
POSTGRES_DB: promo-api-db
我是 node、nest 和 docker 的初学者,但不知何故我被分配了一份工作来 docker 化所有现有的 node js 应用程序。
当我尝试将 Postgres 添加到 docker 时,我遵循了其中一个 youtube tutorial and successfully deployed the basic hello world via docker but in the next youtube tutorial 我在连接到 Postgres 时遇到了一些问题。
我在 mac 上使用 docker 桌面。
这是我的docker-compose.yml
文件代码片段
version: "3.9" # optional since v1.27.0
services:
api:
build:
dockerfile: Dockerfile
context: .
depends_on:
- postgres
environment:
DATABASE_URL: postgres://user:password@postgres:5432/db
NODE_ENV: developement
PORT: 3000
ports:
- "8080:3000"
postgres:
image: postgres:14.0
ports:
- "35000:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: db
这是整个错误日志
感谢您的提前帮助:)
您的问题是 DATABASE_URL
中的拼写错误。在 code 中连接数据库使用 DATABSE_URL
字,但在 docker-compose 中使用 DATABASE_URL
.
您应该将 url: process.env.DATABSE_URL
更改为 url: process.env.DATABASE_URL
确保 docker-compose.yml
中的连接字符串正确。只需传递主机、端口、用户并单独传递,让 TypeOrm
处理连接。
// app.module.ts
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.POSTGRES_HOST,
port: process.env.POSTGRES_PORT,
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DB,
})
还有你的docker-compose.yml:
# docker-compose.yml
version: '3.9'
services:
api:
build:
dockerfile: Dockerfile
context: .
depends_on:
- postgres
environment:
- POSTGRES_HOST=postgres
- POSTGRES_PASSWORD=promo-pass
- POSTGRES_USER=promo-user
- POSTGRES_DB=promo-api-db
- POSTGRES_PORT=5432
postgres:
container_name: postgres
image: postgres
environment:
POSTGRES_USER: promo-user
POSTGRES_PASSWORD: promo-pass
POSTGRES_DB: promo-api-db