Возникла ошибка подключения к БД при запуске Битрикс в docker.
Раньше для работы локально с PHP проектами использовал OpenServer сейчас решил начать работать на docker. Развернул docker под windows 10.
В хост системе Win-10 в корне диска D по адресу мой проект/local/.docker я разместил файлы и папки настроек docker
Так выглядит содержимое моей docker папки:
Запуск docker делаю в консоли windows powershell чтобы запустить docker я перехожу в папку адресу мой проект/local/.docker и запускаю команды docker
В docker я создал несколько контейнеров
project-web - php контейнер где расположен проект на Битрикс (редакция бизнес)
db - mysql контейнер
phpmyadmin - контейнер для phpmyadmin
elasticsearch - контейнер для приложения elasticsearch
код docker-compose.yml файла
version: "3"
services:
bitrix:
container_name: project-web
build:
./php
ports:
- 8018:80
volumes:
- ../..:/var/www/html:cached
- ./apache/site.conf:/etc/apache2/sites-available/000-default.conf
links:
- db
- elasticsearch
environment:
MYSQL_ROOT_PASSWORD: qwerty
depends_on:
- db
- elasticsearch
db:
container_name: project-db
build:
./mysql
command:
mysqld --innodb-flush-method=littlesync --innodb-use-native-aio=OFF --log_bin=ON
volumes:
- ./db:/var/lib/mysql:cached
- ./mysql/backup:/home/backup
environment:
MYSQL_ROOT_PASSWORD: qwerty
phpmyadmin:
container_name: project-pma
image: phpmyadmin/phpmyadmin
links:
- db
ports:
- 8765:80
environment:
MYSQL_ROOT_PASSWORD: qwerty
PMA_HOST: db
depends_on:
- db
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.1
container_name: project-es
environment:
ES_JAVA_OPTS: '-Xms256m -Xmx256m'
discovery.type: single-node
код настроек для php - файл custom.ini
mbstring.func_overload = 2
mbstring.internal_encoding = UTF-8
memory_limit = 512M
short_open_tag = 1
display_errors = 1
opcache.revalidate_freq = 0
max_input_vars = 100000
date.timezone = Europe/Moscow
max_execution_time = 120
#extension=tideways_xhprof.so
код настроек для php - файл Dockerfile
FROM php:7.1-apache
RUN apt-get update
RUN apt-get install libxml2 curl -y
RUN docker-php-ext-install pdo pdo_mysql mysqli json mbstring opcache
RUN apt-get update && apt-get install -y libpng-dev
RUN apt-get install -y \
libwebp-dev \
libjpeg62-turbo-dev \
libpng-dev libxpm-dev \
libfreetype6-dev
RUN docker-php-ext-configure gd \
--with-gd \
--with-webp-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-xpm-dir \
--with-freetype-dir \
--enable-gd-native-ttf
RUN docker-php-ext-install gd
RUN apt-get install libxml2-dev libxslt-dev -y
RUN docker-php-ext-install xsl
RUN apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev
RUN docker-php-ext-install zip
RUN a2enmod rewrite
RUN usermod -u 1000 www-data && groupmod -g 1000 www-data
WORKDIR /var/www/html
COPY custom.ini $PHP_INI_DIR/conf.d/
Запустил контейнеры, разархивировал БД, docker работает, но когда я открываю локальный проект
то Битрикс пишет об ошибке
Bitrix\Main\DB\ConnectionException]
Mysql connect error [localhost]: (2002) No such file or directory (400)
/var/www/html/bitrix/modules/main/lib/db/mysqliconnection.php:65
#0: Bitrix\Main\DB\MysqliConnection->connectInternal()
/var/www/html/bitrix/modules/main/lib/data/connection.php:53
#1: Bitrix\Main\Data\Connection->getResource()
/var/www/html/bitrix/modules/main/lib/db/mysqlisqlhelper.php:21
#2: Bitrix\Main\DB\MysqliSqlHelper->forSql(string)
/var/www/html/bitrix/modules/main/lib/config/option.php:193
#3: Bitrix\Main\Config\Option::load(string)
/var/www/html/bitrix/modules/main/lib/config/option.php:38
#4: Bitrix\Main\Config\Option::get(string, string, string)
/var/www/html/bitrix/modules/main/lib/httprequest.php:394
#5: Bitrix\Main\HttpRequest->prepareCookie(array)
/var/www/html/bitrix/modules/main/lib/httprequest.php:71
#6: Bitrix\Main\HttpRequest->__construct(object, array, array, array, array)
/var/www/html/bitrix/modules/main/lib/httpapplication.php:48
#7: Bitrix\Main\HttpApplication->initializeContext(array)
/var/www/html/bitrix/modules/main/lib/application.php:123
#8: Bitrix\Main\Application->initializeExtendedKernel(array)
/var/www/html/bitrix/modules/main/include.php:24
#9: require_once(string)
/var/www/html/bitrix/modules/main/include/prolog_before.php:14
#10: require_once(string)
/var/www/html/bitrix/modules/main/include/prolog.php:10
#11: require_once(string)
/var/www/html/bitrix/header.php:1
#12: require(string)
/var/www/html/index.php:2
Не могу понять в чем проблема, возможно я неправильно указал настройки PHP либо нужно еще внести дополнительные настройки в docker? Возможно мне не хватает системных ресурсов?