Задать вопрос
dikey58
@dikey58
Самоучка - web-разработчик

Почему медленно идет распаковка архива в Docker контейнере?

Помогите разобраться.
Установил себе WSL и Docker для Windows (вроде docker работает именно из под Linux, потому что приложение без WSL не работает)
Делаю себе минисервер для работы локально с сайтами.
dockerfile
FROM php:8.2-apache

RUN apt-get update && apt-get install -y \
		libfreetype6-dev \
		libjpeg62-turbo-dev \
		libpng-dev \
	&& docker-php-ext-configure gd --with-freetype --with-jpeg \
	&& docker-php-ext-install -j$(nproc) gd \
	&& docker-php-ext-install pdo pdo_mysql \
	&& docker-php-ext-install mysqli \
	&& docker-php-ext-install opcache

version: '3.7'

services:
  web:
    build:
      context: ./web
      dockerfile: Dockerfile
    depends_on:
      - db
    volumes:
      - ./web:/var/www #Это копирует из src в /var/www/
      - ./web/conf.d/bitrix.ini:/usr/local/etc/php/conf.d/bitrix.ini

    ports:
      - "80:80"
 
  db:
    image: library/mysql:5.7.30
    volumes:
      - ./db/data:/var/lib/mysql
      - ./db/conf.d/custom.cnf:/etc/mysql/conf.d/custom.cnf
    command: > # чтобы срабатывал файл с кастомными настройками
          bash -c "
          chmod 644 /etc/mysql/conf.d/*.cnf
          && /entrypoint.sh mysqld
          "
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test_db
      MYSQL_USER: devuser
      MYSQL_PASSWORD: devpass
      TZ: Europe/Moscow
    ports:
      - 6033:3306

Делаю билд и запускаю.
На сервер закидываю файл bitrixsetup.php, к которому потом обращаюсь через браузер. В браузере запускаю установку CMS. Скрипт скачивает архив и его распаковывает. На любом хостинге, это занимает не больше 5 минут.
У меня в контейнере архив скачивается приблизительно за 2 минуты. А вот распаковка может идти часами. Диспетчер задач windows показывает, что всех ресурсов с запасом - то есть ни проц, ни хард не нагружены даже на 10%. Получается упор не в ресурсы машины, а в какие-то ограничения WSL.
В чем может быть проблема?
  • Вопрос задан
  • 179 просмотров
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
smilingcheater
@smilingcheater
Дайте угадаю - вы запускаете файлы, расположенные на диске винды?
Самая большая проблема с WSL в винде - то, что оно с нормальной скоростью работает только со своими линуксовыми дисками. У вас же получается схема, что WSL запущен с виндового диска, в него смонтированы папки с винды (блоки volumes в докер-композе).
Единственный нормальный способ работать с WSL в винде с нормальной скоростью - хранить ВСЕ данные, используемые в WSL, на его же диске. В винде он будет выводиться в проводнике под сетевым окружением, отдельным блоком Linux.
Ответ написан
Комментировать
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Поставьте себе VirtualBox, в нём сделайте виртуалку с любым линуксом (например дебиан), а уже в линуксе используйте докер. Это самое простое и удобное решение.
Ответ написан
Комментировать
@PavelDAS
Аналогично, два дня ставило и только 60%...

Решилось так:
в настройках отключить Use the WSL 2 based engine.
67249e461f35d209142001.png

и установка за 1,5 часа развернулась :)

если не поможет, то вариант (Windows 10):
1) переключить на windows контейнеры (67249d8646795149862261.png
2) затем докер напишет ошибку и что надо ввести команду в PowerShell
3) Запускаем PowerShell от админа, вводим команду , перегружаем комп
4) переключаемся обратно на linux контейнеры
5) в настройках отключаем Use the WSL 2 based engine.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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