在 Docker 容器中创建 postgres 数据库时出错

问题描述 投票:0回答:1

我有以下 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

postgresql docker docker-compose
1个回答
0
投票

文件中的所有内容都是正确的,但数据库似乎未按您的预期初始化。发生这种情况是因为数据库在之前的运行中已初始化。因此,您需要删除设置用于存储数据库的卷。

您可以请求删除卷

docker-compose down --volumes

然后,更新容器

docker-compose up -d --build

© www.soinside.com 2019 - 2024. All rights reserved.