我正在尝试迁移数据,但始终找不到我的postgreSQL。
version: '3'
services:
server:
build: ./server
ports:
- 3002:3002
depends_on:
- db
environment:
CORS_ALLOW_ORIGINS: http://localhost:8080,http://localhost:80
PORT: 3002
DEBUG: vuichoi*
DEBUG_HIDE_DATE: 1
SECRET_OR_PRIVATE_KEY: secret
SECRET_OR_PUBLIC_KEY: secret
DATABASE_URL: postgres://vuichoi:@db:5432/vuichoi #point the server container to the db container's IP address
command: bash -c "sequelize db:migrate && sequelize db:seed:all"
db:
ports:
- 5432:5432
environment:
POSTGRES_USER: vuichoi
POSTGRES_DB: vuichoi
image: postgres:10
config.json
{
"development": {
"username": "vuichoi",
"database": "vuichoi",
"host": "localhost",
"dialect": "postgres"
},
"test": {
"username": "vuichoi",
"password": "vuichoi",
"database": "database_test",
"host": "localhost",
"dialect": "postgres"
},
"production": {
"use_env_variable": "DATABASE_URL"
}
}
在docker-compose up --build之后 enter image description here
当我尝试迁移时:
答案 0 :(得分:2)
您应该这样在docker-compose文件中为容器命名:
db:
container_name: my_database
ports:
- 5432:5432
environment:
POSTGRES_USER: vuichoi
POSTGRES_DB: vuichoi
image: postgres:10
server:
container_name: my_server
然后在您的config.json中更改主机
{
"development": {
"username": "vuichoi",
"database": "vuichoi",
"host": "my_database",
"dialect": "postgres"
},
此外,您的数据库可以在运行迁移脚本后启动。 要解决此问题,您可以添加
server:
container_name: my_server
restart: always
因此,您的服务器将在第一次尝试失败后重新启动,并且迁移脚本将正常运行
答案 1 :(得分:1)
我通过将config.json中的“ localhost”替换为“ host.docker.internal”来修复,然后运行正常。问题可能是找不到我的Db容器
答案 2 :(得分:0)
问题是您同时运行服务器和数据库,并且在服务器启动时,它尝试连接到仍在启动/创建的数据库。
此问题的解决方案是使用一个脚本,该脚本仅在数据库启动后几秒钟启动服务器。在 https://github.com/PedroS11/node-postgres-redis-docker您有一个示例,entry-point.sh。或者,如果需要,搜索“ waiting it docker”,您将找到一个脚本以及更多示例。