architect/_archive/2025-11-cleanup/library/drupal/docker/README.md

Drupal Docker Images

Местоположение: /opt/claude-workspace/library/drupal/docker/
Дата создания: 2025-11-16


Dockerfile для Drupal 11 + Commerce

Версия: PHP 8.3 + Apache
Базовый образ: php:8.3-apache

✅ Исправления

1. Поддержка JPEG/WebP/FreeType в GD

Проблема:
Стандартный образ php:8.3-apache не включает поддержку JPEG при компиляции модуля GD, что приводит к ошибкам:

Image scale failed using the gd toolkit
The image toolkit 'gd' can not process image (image/jpeg)

Решение:
Добавлены библиотеки и конфигурация GD:

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libwebp-dev \
    libfreetype6-dev \
    && docker-php-ext-configure gd \
        --with-freetype \
        --with-jpeg \
        --with-webp \
    && docker-php-ext-install gd

Результат:
- ✅ JPEG Support: enabled
- ✅ WebP Support: enabled
- ✅ FreeType Support: enabled
- ✅ PNG Support: enabled (было раньше)


Установленные расширения PHP

pdo_pgsql    # PostgreSQL PDO
pgsql        # PostgreSQL native
mbstring     # Multibyte strings
exif         # EXIF данные изображений
pcntl        # Process control
bcmath       # Arbitrary precision math
gd           # Image processing (с JPEG/WebP/FreeType)
zip          # ZIP archives
opcache      # PHP opcode cache

Использование

Создание нового проекта

# 1. Создать директорию проекта
mkdir my-drupal-project
cd my-drupal-project

# 2. Скопировать Dockerfile
cp /opt/claude-workspace/library/drupal/docker/Dockerfile .

# 3. Создать docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  drupal:
    build: .
    container_name: my-drupal
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./web:/var/www/html
    environment:
      - POSTGRES_HOST=db
      - POSTGRES_PORT=5432
      - POSTGRES_DB=drupal
      - POSTGRES_USER=drupal
      - POSTGRES_PASSWORD=drupal_password
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    container_name: my-drupal-db
    restart: unless-stopped
    environment:
      - POSTGRES_DB=drupal
      - POSTGRES_USER=drupal
      - POSTGRES_PASSWORD=drupal_password
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U drupal"]
      interval: 10s
      timeout: 5s
      retries: 5

networks:
  default:
    driver: bridge
EOF

# 4. Собрать и запустить
docker compose build
docker compose up -d

# 5. Установить Drupal внутри контейнера
docker exec my-drupal bash -c "composer create-project drupal/recommended-project:^11.0 . --no-interaction"

# 6. Установить Drupal Commerce
docker exec my-drupal bash -c "composer require 'drupal/commerce:^3.0' --no-interaction"

Применение к существующим проектам

Обновление pim-dev, pim-demo, pim.0kt.ru

# 1. Остановить контейнер
cd /root/pim-dev  # или pim-demo, pim-drupal
docker compose down

# 2. Обновить Dockerfile
cp /opt/claude-workspace/library/drupal/docker/Dockerfile .

# 3. Пересобрать образ
docker compose build --no-cache

# 4. Запустить
docker compose up -d

# 5. Проверить поддержку JPEG
docker exec pim-dev-drupal php -r 'var_dump(function_exists("imagecreatefromjpeg"));'
# Должно вывести: bool(true)

# 6. Очистить кэш Drupal
docker exec pim-dev-drupal bash -c "cd /var/www/html && ./vendor/bin/drush cr"

Проверка работы изображений

1. Проверка PHP расширений

docker exec CONTAINER_NAME php -r 'phpinfo();' | grep -A10 'GD Support'

Ожидается:

GD Support => enabled
JPEG Support => enabled
WebP Support => enabled
FreeType Support => enabled

2. Проверка генерации image styles

# Очистить старые стили
docker exec CONTAINER_NAME rm -rf /var/www/html/web/sites/default/files/styles/

# Перейти на сайт и открыть любую страницу с изображениями
# Стили должны автоматически создаться без ошибок

3. Проверка логов Drupal

docker exec CONTAINER_NAME bash -c "cd /var/www/html && ./vendor/bin/drush watchdog:show --severity=Error | grep image"

Не должно быть ошибок "gd toolkit can not process image".


История версий

Дата Версия Изменения
2025-11-14 1.0 Начальная версия (без JPEG)
2025-11-16 2.0 Добавлена поддержка JPEG/WebP/FreeType

Проекты использующие этот Dockerfile


Создано: 2025-11-16
Автор: Claude Code