Docker WordPress + Apache как перенастроить контейнер, чтобы не зависал после простоя?
WordPress запускается в Docker со стандартной конфигурацией и Apache. Когда работаешь с ним никаких проблем, если оставить, через некоторое время простоя контейнер перестает откликаться, его нельзя никак остановить или удалить. Помогает только выключение и запуск заново Docker. Несколько раз в консоли ловил ошибку от Апача
"Sigwinch shutting down gracefully" в остальных случаях консоль просто замораживается.
Читал, что это апач в какие-то моменты выдает и не может отловить сигнал
Dockerfile для создания образа
FROM wordpress:php8.2-apache RUN apt-get update; RUN apt install -y curl; RUN apt-get install -y libmagickwand-dev; pecl install imagick; docker-php-ext-enable imagick; WORKDIR /var/www/html |
FROM wordpress:php8.2-apache RUN apt-get update; RUN apt install -y curl; RUN apt-get install -y libmagickwand-dev; pecl install imagick; docker-php-ext-enable imagick; WORKDIR /var/www/html
docker-compose.yml
services: wordpress: depends_on: - db links: - db build: context: ./docker/wordpress/ dockerfile: Dockerfile volumes: - ./wordpress:/var/www/html env_file: - .env restart: always environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: ${DB_USER} WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD} WORDPRESS_DB_NAME: ${MYSQL_DATABASE} WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX} WORDPRESS_DEBUG: 1 WORDPRESS_CONFIG_EXTRA: | define( 'DISABLE_WP_CRON', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', true); define( 'SCRIPT_DEBUG', true); define( 'WP_ALLOW_REPAIR', true); |
services: wordpress: depends_on: - db links: - db build: context: ./docker/wordpress/ dockerfile: Dockerfile volumes: - ./wordpress:/var/www/html env_file: - .env restart: always environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: ${DB_USER} WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD} WORDPRESS_DB_NAME: ${MYSQL_DATABASE} WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX} WORDPRESS_DEBUG: 1 WORDPRESS_CONFIG_EXTRA: | define( 'DISABLE_WP_CRON', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', true); define( 'SCRIPT_DEBUG', true); define( 'WP_ALLOW_REPAIR', true);
Подскажите, пожалуйста, как можно скорректировать настройку, чтобы контейнер не зависал.
Docker desktop Windows 11
Дополнительно:
ВП тут никаким боком. Не нужно ставить не относящиеся к делу теги.
Ответы:
1. Перенести конструкцию в нормальное окружение - не винду, не десктопный Докер, не десктопный комп.
- На линукс или мак? :)
- Юрий Горбунов, да.
- Юрий Горбунов, на маке тоже docker desktop, а тебе нужен docker engine который работает только на линуксе
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы настроить Docker контейнер с WordPress и Apache так, чтобы он не зависал после простоя, можно предпринять несколько шагов:
1. Увеличить количество ресурсов, выделенных контейнеру. Для этого можно использовать параметры `--memory` и `--cpus` при запуске контейнера. Например:
docker run -d --name wordpress -p 80:80 --memory=2g --cpus=2 wordpress:latest
2. Настроить Apache для оптимальной работы. Можно увеличить количество рабочих процессов и уменьшить время простоя. Ниже приведен пример конфигурации Apache:
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0
3. Использовать механизмы Healthcheck Docker, чтобы контролировать работоспособность контейнера. Например, можно добавить Healthcheck в Dockerfile:
HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit 1
4. Периодически обновлять Docker образы и пакеты в контейнере, чтобы избежать уязвимостей и непредвиденных проблем.
5. Мониторить ресурсы контейнера с помощью инструментов мониторинга, таких как Prometheus и Grafana, чтобы оперативно реагировать на проблемы.
Следуя этим рекомендациям, вы сможете настроить Docker контейнер с WordPress и Apache так, чтобы он не зависал после простоя и работал стабильно и эффективно.