Местоположение: /opt/claude-workspace/library/drupal/docker/
Дата создания: 2025-11-16
Версия: PHP 8.3 + Apache
Базовый образ: php:8.3-apache
Проблема:
Стандартный образ 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 (было раньше)
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"
# 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"
docker exec CONTAINER_NAME php -r 'phpinfo();' | grep -A10 'GD Support'
Ожидается:
GD Support => enabled
JPEG Support => enabled
WebP Support => enabled
FreeType Support => enabled
# Очистить старые стили
docker exec CONTAINER_NAME rm -rf /var/www/html/web/sites/default/files/styles/
# Перейти на сайт и открыть любую страницу с изображениями
# Стили должны автоматически создаться без ошибок
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 |
Создано: 2025-11-16
Автор: Claude Code