edi*_*sic 4 node.js docker docker-compose typeorm
您知道为什么当我尝试运行 typeorm:run 执行迁移时出现以下错误吗?
node --require ts-node/register ./node_modules/typeorm/cli.js migration:run
Error during migration run:
Error: getaddrinfo ENOTFOUND users-service-db
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:69:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'users-service-db',
fatal: true
}
error Command failed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
我的配置是
users-service-db:
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=db
image: mysql:5.7.20
ports:
- "7201:3306"
Run Code Online (Sandbox Code Playgroud)
users-service-db 正在运行,这是否Error: getaddrinfo ENOTFOUND users-service-db
表明主机不知道要做什么。你能帮我吗?
尝试答案 1 和 2 后仍然遇到相同的错误,不知道该怎么做,以前是否有效?
node --require ts-node/register ./node_modules/typeorm/cli.js migration:run
Error during migration run:
Error: getaddrinfo ENOTFOUND users-service-db
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:69:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'users-service-db',
fatal: true
}
error Command failed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
最后我解决了这个错误,感谢@Eranga Heshan
我创建了一个额外的 ormConfig.js 文件并粘贴了以下内容:
users-service-db:
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=db
image: mysql:5.7.20
ports:
- "7201:3306"
Run Code Online (Sandbox Code Playgroud)
然后
node --require ts-node/register ./node_modules/typeorm/cli.js migration:run --config src/db/migrations/ormConfig
Run Code Online (Sandbox Code Playgroud)
您的 VS Code 终端正在您的计算机内运行。所以它无法解析users-service-db
主机。
您可以通过两种方式执行此操作。
localhost
创建一个新的 typeorm 连接配置文件migrationsOrmConfig.ts
并将其放入您的项目中(假设您将其放入src/migrations
目录中)
export = {
host: 'localhost',
port: '7201',
type: 'mysql',
user : 'root',
password : 'password',
database : 'db' ,
};
Run Code Online (Sandbox Code Playgroud)
现在您可以修改之前用于运行迁移的命令
export = {
host: 'localhost',
port: '7201',
type: 'mysql',
user : 'root',
password : 'password',
database : 'db' ,
};
Run Code Online (Sandbox Code Playgroud)
在 VSCode 终端中输入
node --require ts-node/register ./node_modules/typeorm/cli.js migration:run --config src/migrations/migrationsOrmConfig
Run Code Online (Sandbox Code Playgroud)
获取CONTAINER ID
(user-service
假设是CONTAINER_ID
)
打开容器内的终端
docker ps -a
Run Code Online (Sandbox Code Playgroud)
执行您之前用于运行迁移的命令(如果以下命令抱怨typeorm
找不到节点模块,您可以将其安装在容器内)
docker exec -it CONTAINER_ID /bin/bash
Run Code Online (Sandbox Code Playgroud)