无法使用 postgres 和 docker 创建数据库
Can't create database with postgres and docker
我正在尝试使用以下命令在我的应用程序中创建一个数据库:
php bin/console doctrine:database:create
之后我得到一个错误:
An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
我的 docker-compose 文件看起来像这样:
version: '3'
services:
php:
container_name: symfony_php
build:
context: ./php
volumes:
- ./symfony/:/var/www/symfony/
depends_on:
- database
networks:
- symfony
database:
container_name: symfony_postgres
image: postgres
restart: always
hostname: symfony_postgres
environment:
POSTGRES_DB: symfony_db
POSTGRES_USER: root
POSTGRES_PASSWORD: root
ports:
- "5432:5432"
volumes:
- ./postgres:/var/lib/postgres
networks:
- symfony
pgadmin:
container_name: symfony_pgadmin
image: dpage/pgadmin4
restart: always
ports:
- "5555:80"
depends_on:
- database
links:
- database
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: root
networks:
- symfony
nginx:
container_name: symfony_nginx
image: nginx:stable-alpine
build:
context: ./nginx
dockerfile: Dockerfile-nginx
volumes:
- ./symfony:/var/www/symfony
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- database
networks:
- symfony
networks:
symfony:
我没有使用任何 postgres 配置文件,根据 Symfony 文档,.env 中有一个配置行:
DATABASE_URL="postgresql://root:root@127.0.0.1:5432/symfony_db?serverVersion=11&charset=utf8"
我 运行 netstat 命令,我得到:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
我认为在我的应用程序服务器是 运行 postgres 的地方绑定我的本地主机地址存在问题。有谁知道,我该如何解决?
在 docker-compose 中,所有服务都可以通过其名称访问。
您需要将数据库主机地址更改为 数据库 - 作为 docker-compose
中的服务名称
DATABASE_URL="postgresql://root:root@database:5432/symfony_db?serverVersion=11&charset=utf8"
我正在尝试使用以下命令在我的应用程序中创建一个数据库:
php bin/console doctrine:database:create
之后我得到一个错误:
An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
我的 docker-compose 文件看起来像这样:
version: '3'
services:
php:
container_name: symfony_php
build:
context: ./php
volumes:
- ./symfony/:/var/www/symfony/
depends_on:
- database
networks:
- symfony
database:
container_name: symfony_postgres
image: postgres
restart: always
hostname: symfony_postgres
environment:
POSTGRES_DB: symfony_db
POSTGRES_USER: root
POSTGRES_PASSWORD: root
ports:
- "5432:5432"
volumes:
- ./postgres:/var/lib/postgres
networks:
- symfony
pgadmin:
container_name: symfony_pgadmin
image: dpage/pgadmin4
restart: always
ports:
- "5555:80"
depends_on:
- database
links:
- database
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: root
networks:
- symfony
nginx:
container_name: symfony_nginx
image: nginx:stable-alpine
build:
context: ./nginx
dockerfile: Dockerfile-nginx
volumes:
- ./symfony:/var/www/symfony
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- database
networks:
- symfony
networks:
symfony:
我没有使用任何 postgres 配置文件,根据 Symfony 文档,.env 中有一个配置行:
DATABASE_URL="postgresql://root:root@127.0.0.1:5432/symfony_db?serverVersion=11&charset=utf8"
我 运行 netstat 命令,我得到:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
我认为在我的应用程序服务器是 运行 postgres 的地方绑定我的本地主机地址存在问题。有谁知道,我该如何解决?
在 docker-compose 中,所有服务都可以通过其名称访问。
您需要将数据库主机地址更改为 数据库 - 作为 docker-compose
中的服务名称DATABASE_URL="postgresql://root:root@database:5432/symfony_db?serverVersion=11&charset=utf8"