Docker-Compose环境下Flask+SQLAlchemy连接PostgreSQL配置问题
解决Docker Compose下Flask+SQLAlchemy连接PostgreSQL的问题
1. 修改SQLAlchemy连接字符串
找到你代码里创建engine的那行代码,把连接地址中的localhost替换为docker-compose.yml里定义的数据库服务名db:
engine = create_engine('postgresql://postgres:[mypassword]@db:5432/employee-manager-db')
在Docker Compose的默认网络环境中,各个服务可以通过服务名直接访问,容器内的localhost指向容器自身,无法访问宿主机的数据库服务,所以必须用服务名db作为主机地址。
2. 补充PostgreSQL服务的初始化环境变量
postgres镜像需要指定初始化参数才能正常创建数据库,你需要在docker-compose.yml的db服务中添加environment配置,参数要和连接字符串保持一致:
version: '3.8' services: backend: build: context: . dockerfile: Dockerfile ports: - 8000:8000 volumes: - .:/app depends_on: - db db: image: postgres:14.5 restart: always expose: - '5432' volumes: - .dbdata:/var/lib/postgresql ports: - '5432:5432' environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: [mypassword] # 替换为你实际使用的密码 POSTGRES_DB: employee-manager-db
3. 重启服务
修改完成后,执行以下命令重新构建并启动服务:
docker-compose down docker-compose up --build
内容的提问来源于stack exchange,提问作者NendoRiki
相关产品推荐
相关产品推荐

