![](/img/trans.png)
[英]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 - PostgreSQL could not connect to server: Connection refused 127.0.0.1:5432
嘗試將我的 Symfony 4 應用程序 dockerise 與 PostgreSQL 一起運行
但是當我跑步時:
$ sudo docker-compose build
我有這個錯誤:
在AbstractPostgreSQLDriver.php 第 73 行中:
驅動程序發生異常: SQLSTATE [08006] [7] 無法連接到服務器:連接被拒絕:
服務器是否在主機“127.0.0.1”上運行並接受
端口5432上的 TCP/IP 連接?
這是我的docker-compose.yml
文件:
version: '3.7'
services:
db:
image: ${POSTGRES_IMAGE}
restart: always
environment:
POSTGRES_DB: ${DATABASE_NAME}
POSTGRES_USER: ${DATABASE_USER}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
php:
build:
context: .
dockerfile: ./docker/php/Dockerfile
restart: on-failure
user: 1000:1000
volumes:
- ./docker/php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
- .:/var/www/symfony
working_dir: /var/www/symfony
depends_on:
- db
我的.env
文件的內容
DATABASE_NAME=db
DATABASE_HOST=127.0.0.1
DATABASE_PORT=5432
DATABASE_USER=postgres
DATABASE_PASSWORD=root
## Docker images (name and version)
PHP_IMAGE=php:7.3-fpm
POSTGRES_IMAGE=postgres
也僅供參考:
$ sudo docker-compose config
debian@debian:~/dev/symfony$ sudo docker-compose config
services:
db:
environment:
POSTGRES_DB: mrd
POSTGRES_PASSWORD: root
POSTGRES_USER: postgres
image: postgres
restart: always
php:
build:
context: /home/debian/dev/symfony
dockerfile: ./docker/php/Dockerfile
depends_on:
- db
restart: on-failure
user: 1000:1000
volumes:
- /home/debian/dev/symfony:/var/www/symfony:rw
working_dir: /var/www/symfony
version: '3.7'
我的Dockerfile
:
FROM php:7.3-fpm
WORKDIR /var/www/symfony
RUN apt-get update
# Install Postgres PDO
RUN apt-get install -y libpq-dev \
&& apt-get install -y zip \
&& docker-php-ext-install pgsql pdo_pgsql \
&& apt-get install -y git
RUN pecl install apcu
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('SHA384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
&& php composer-setup.php --filename=composer \
&& php -r "unlink('composer-setup.php');" \
&& mv composer /usr/local/bin/composer
RUN ls -larth
COPY . /var/www/symfony
RUN PATH=$PATH:/var/www/symfony/vendor/bin:bin
RUN pwd \
&& ls \
&& composer install --no-interaction --no-ansi --optimize-autoloader\
&& php bin/console doctrine:database:create \
&& php bin/console doctrine:schema:update --no-interaction \
&& php bin/console doctrine:fixtures:load --no-interaction
有人知道它為什么這樣做嗎? 以及如何解決?
搜索了很多,找不到任何有用的東西。 認為depends_on: db
可以解決問題,但沒有。
Symphony 的主機不會是 localhost。 它將是 db(服務名稱)。 db 而不是 localhost。
您問題中的粘貼表明您的docker-compose.yml
文件需要解決的一些問題:
.env
文件的env_file:
條目php
服務的image
.
作為您的構建上下文(應該是指示Dockerfile
所在位置的目錄)-db
和- /home/debian/dev/symfony:/var/www/symfony:rw
的縮進關閉——這可能不是問題,但仍然難以閱讀從您關於build
失敗並出現有關無法連接到數據庫的錯誤的問題中,您能否更新您的問題並為 symfony 分享您的Dockerfile
? 我懷疑您需要刪除對數據庫連接的引用。
嘗試運行:
docker-compose ps
設置 DATABASE_HOST=容器名稱
DATABASE_NAME=db
DATABASE_HOST=## paste Container name
DATABASE_PORT=5432
DATABASE_USER=postgres
DATABASE_PASSWORD=root
## Docker images (name and version)
PHP_IMAGE=php:7.3-fpm
POSTGRES_IMAGE=postgres
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.