Docker WordPress + Apache как перенастроить контейнер, чтобы не зависал после простоя?

Ссылка скопирована
1 ответ

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 который работает только на линуксе
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Для того чтобы настроить Docker контейнер с WordPress и Apache так, чтобы он не зависал после простоя, можно предпринять несколько шагов:

1. Увеличить количество ресурсов, выделенных контейнеру. Для этого можно использовать параметры `--memory` и `--cpus` при запуске контейнера. Например:

docker run -d --name wordpress -p 80:80 --memory=2g --cpus=2 wordpress:latest

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   0

StartServers 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

HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit 1

4. Периодически обновлять Docker образы и пакеты в контейнере, чтобы избежать уязвимостей и непредвиденных проблем.

5. Мониторить ресурсы контейнера с помощью инструментов мониторинга, таких как Prometheus и Grafana, чтобы оперативно реагировать на проблемы.

Следуя этим рекомендациям, вы сможете настроить Docker контейнер с WordPress и Apache так, чтобы он не зависал после простоя и работал стабильно и эффективно.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно