@inviziblll

Почему возникает ошибка при запуске Битрикс в docker?

Возникла ошибка подключения к БД при запуске Битрикс в docker.

Раньше для работы локально с PHP проектами использовал OpenServer сейчас решил начать работать на docker. Развернул docker под windows 10.

В хост системе Win-10 в корне диска D по адресу мой проект/local/.docker я разместил файлы и папки настроек docker

Так выглядит содержимое моей docker папки:
5fbe135dbcba5271525091.png

Запуск 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? Возможно мне не хватает системных ресурсов?
  • Вопрос задан
  • 816 просмотров
Решения вопроса 1
smilingcheater
@smilingcheater
Вы указали в конфигах подключения в MYSQL хост Localhost, но база у вас в отдельном контейнере, db.
Указывайте его в качестве хоста для подключения
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы