PHP / Laravel SQLSTATE [HY000] [2002] Нет такого файла или каталога при использовании docker-compose и MySql нет стандартного порта

У меня есть следующий файл docker-compose для построения стека LAMP:

version: "3.1"services:

mariadb:
image: mariadb:latest
container_name: mariadb
working_dir: /application
volumes:
- .:/application
environment:
- MYSQL_ROOT_PASSWORD=test
- MYSQL_DATABASE=test
- MYSQL_USER=test
- MYSQL_PASSWORD=test
ports:
- "8052:3306"
webserver:
image: nginx:latest
container_name: nginx
working_dir: /application
volumes:
- .:/application
- ./dev/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8050:80"
php-fpm:
build: dev/php-fpm
container_name: php-fpm
working_dir: /application
volumes:
- .:/application
- ./dev/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini

Это заставляет мой стек работать и работает в моем файле .env, который у меня есть:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=8052
DB_DATABASE=test
DB_USERNAME=test
DB_PASSWORD=test

Когда Laravel пытается подключиться, я получаю следующее сообщение об ошибке: SQLSTATE[HY000] [2002] No such file or directory

После некоторых исследований я обнаружил, что изменение DB_HOST на 127.0.0.1 меняет способ подключения PHP (TCP вместо сокета). После попытки я получаю другую ошибку: SQLSTATE[HY000] [2002] Connection refused

Дело в том, что php artisan migrate работает и подключается нормально. Я также могу подключиться к БД из CLI и инструмента GUI.

Что-то не так в моем сборщике, вызывающем это?

Файл Docker:

FROM php:fpm
WORKDIR "/application"
ARG DEBIAN_FRONTEND=noninteractiv

# Install selected extensions and other stuff
RUN apt-get update \
&& apt install ca-certificates apt-transport-https \
&& apt install wget \
&& docker-php-ext-install pdo_mysql && docker-php-ext-enable pdo_mysql \
&& wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add - \
&& echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list \
&& apt-get -y --no-install-recommends install php7.3-memcached php7.3-mysql php7.3-redis php7.3-xdebug \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*

Nginx conf:

server {
listen 80 default;

client_max_body_size 108M;

access_log /var/log/nginx/application.access.log;


root /application/public;
index index.php;

if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}

location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_param APP_ENV "dev";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}

}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector