typescript - MikroORM 拒绝连接到 docker 容器中的 postgres
问题描述
MikroORM 在 dockerMikroORM failed to connect to database postgres on postgresql://postgres:*****@127.0.0.1:5432
容器中出于某种原因说。目前尚不清楚连接过程中出了什么问题。以下是一些相关文件:
docker-compose.yml
version: "3.9"
services:
db:
image: postgres:13
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB
- POSTGRES_PASSWORD
app:
build: .
network_mode: bridge
volumes:
- app-data:/app/data
depends_on:
- db
env_file: .env
volumes:
app-data: {}
db-data: {}
mikro-orm.config.ts
import { MikroORM } from "@mikro-orm/core";
import { User } from "./entities/user";
export default {
entities: [User],
migrations: {
path: './migrations', // path to the folder with migrations
pattern: /^[\w-]+\d+\.[tj]s$/, // regex pattern for the migration files
},
type: "postgresql",
host: process.env.POSTGRES_HOST,
port: 5432,
dbName: process.env.POSTGRES_DB,
user: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
debug: true,
} as Parameters<typeof MikroORM.init>[0];
还有我的日志
db_1 |
db_1 | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1 |
db_1 | 2021-01-15 00:37:58.161 UTC [1] LOG: starting PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
db_1 | 2021-01-15 00:37:58.162 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
db_1 | 2021-01-15 00:37:58.162 UTC [1] LOG: listening on IPv6 address "::", port 5432
db_1 | 2021-01-15 00:37:58.165 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1 | 2021-01-15 00:37:58.172 UTC [27] LOG: database system was shut down at 2021-01-15 00:37:39 UTC
db_1 | 2021-01-15 00:37:58.181 UTC [1] LOG: database system is ready to accept connections
app_1 |
app_1 | > bot@1.0.0 start
app_1 | > tsc && node dist/index.js
app_1 |
app_1 | [discovery] ORM entity discovery started, using ReflectMetadataProvider
app_1 | [discovery] - processing entity User
app_1 | [discovery] - entity discovery finished, found 1 entities, took 49 ms
app_1 | [info] MikroORM failed to connect to database postgres on postgresql://postgres:*****@127.0.0.1:5432
解决方案
我可以通过添加从一个容器到下一个容器的链接来解决此问题。通过添加行
links:
- "db:db"
到app
容器,我能够连接
推荐阅读
- javascript - 如何使用大于 1mb 的 socket.io 和 nodejs 实现房间到房间的文件共享系统?
- android - Android Studio - 跨越多个 Java 进程的 Gradle 命令
- html - 如何使 p 元素和按钮与 CSS 水平对齐
- r - 在 R 中创建地图
- c# - 如何将选定的复选框项目从列表存储到 .net 核心中的另一个列表?
- ruby-on-rails - 双自参照模型
- apache-spark - 如何更改数据框中的多个特定日期
- postgresql - 如何将 heroku postgres 备份文件传输到 docker postgres 容器(文件放在哪里?)
- matplotlib - 如何从其他脚本绘制图形实例
- javascript - 将 2 个不同的不和谐通道相互连接