我有以下 docker-compose 文件,当我运行
docker-compose up -d --build
时,我收到一条指示成功的消息。日志没有打印任何异常。
[+] Running 2/2
✔ Container fastapi-tdd-docker-web-db-1 Running 0.0s
✔ Container fastapi-tdd-docker-web-1 Started
但是当我尝试使用
docker-compose exec web-db psql -U postgres
访问 postgres 数据库,然后尝试 \c web_dev
时,我收到此错误
connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "web_dev" does not exist
Previous connection kept
这是我的 docker compose yaml 文件 - 这里出了什么问题?
version: '3.8'
services:
web:
build: ./project
command: uvicorn app.main:app --reload --workers 1 --host 0.0.0.0 --port 8000
volumes:
- ./project:/usr/src/app
ports:
- 8004:8000
environment:
- ENVIRONMENT=dev
- TESTING=0
- DATABASE_URL=postgres://postgres:postgres@web-db:5432/web_dev
- DATABASE_TEST_URL=postgres://postgres:postgres@web-db:5432/web_test
depends_on:
- web-db
web-db:
build:
context: ./project/db
dockerfile: Dockerfile
expose:
- 5432
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
文件中的所有内容都是正确的,但数据库似乎未按您的预期初始化。发生这种情况是因为数据库在之前的运行中已初始化。因此,您需要删除设置用于存储数据库的卷。
您可以请求删除卷
docker-compose down --volumes
然后,更新容器
docker-compose up -d --build