Инсталиране на WordPress с Docker Compose с предварително конфигуриран php.ini

Инсталиране на WordPress с Docker Compose с предварително конфигуриран php.ini

Docker Compose е мощен инструмент, който позволява лесно управление на множество контейнери и тяхната конфигурация. В това ръководство ще ви покажа как да инсталирате WordPress с Docker Compose стъпка по стъпка, дори ако сте начинаещ.

Предпоставки

Преди да започнете, уверете се, че имате инсталирани следните програми на вашия компютър:

  • Docker
  • Docker Compose

Можем да ги инсталираме с:

curl -fsSL https://get.docker.com -o install-docker.sh
sudo sh install-docker.sh

Можете да проверите дали са инсталирани правилно, като изпълните следните команди в терминала:

docker --version
docker-compose --version

Стъпка 1: Създаване на проектна директория

Първо, създайте необходимата структура от директории и файлове:

mkdir -p wordpress/config wp-content
cd wordpress
touch docker-compose.yml .env config/php.ini

2. Конфигуриране на php.ini

Редактирайте config/php.ini и добавете следните основни настройки:

; Основни настройки
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300

; Грешки и логване
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

; Оптимизации
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=200

; Настройки за WordPress
max_file_uploads = 20
allow_url_fopen = On
short_open_tag = Off

Стъпка 2: Създаване на Docker Compose файл

Създайте файл с име docker-compose.yml в новата директория. Можете да използвате следния пример:

version: '3.8'

services:
  db:
    image: mysql:8.0
    container_name: wordpress_db
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpass}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-wordpress}
      MYSQL_USER: ${MYSQL_USER:-wpuser}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-wppass}
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

  wordpress:
    image: wordpress:latest
    container_name: wordpress_app
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "8181:80"
    restart: always
    volumes:
      - wordpress:/var/www/html
      - ./wp-content:/var/www/html/wp-content
      - ./config/php.ini:/usr/local/etc/php/conf.d/custom.ini
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE:-wordpress}
      WORDPRESS_DB_USER: ${MYSQL_USER:-wpuser}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD:-wppass}

volumes:
  db_data:
    driver: local
  wordpress:
    driver: local

Стъпка 3: Създаване на .env файл (по избор)

Ако искате да използвате различни стойности от тези по подразбиране, създайте файл .env в същата директория:

# MySQL настройки
MYSQL_ROOT_PASSWORD=your_strong_root_password
MYSQL_DATABASE=wordpress
MYSQL_USER=wpuser
MYSQL_PASSWORD=your_strong_db_password

# WordPress настройки (по избор)
WORDPRESS_DEBUG=0

Стъпка 4: Стартиране на контейнерите

Изпълнете следната команда в директорията, където се намира вашият docker-compose.yml файл:

docker-compose up -d

Тази команда ще:

  • Изтегли необходимите Docker образи (ако не са вече изтеглени)
  • Създаде и стартира контейнерите в background режим (-d флаг)

Стъпка 5: Проверка на работещите контейнери

Можете да проверите състоянието на вашите контейнери с:

docker-compose ps

Или за повече подробности:

docker ps

Стъпка 6: Достъп до WordPress инсталация

След като контейнерите са стартирани, можете да достъпите WordPress инсталацията на:

http://10.110.110.110:8080

Трябва да видите началната страница на WordPress инсталацията. Следвайте стъпките на екрана, за да завършите инсталацията.

Предимства на този подход:

  1. Предварителна PHP конфигурация – Не чакаме да възникнат проблеми с лимитите
  2. Лесна промяна на настройки – Можете да редактирате php.ini без да рестартирате контейнерите (в някои случаи)
  3. Стандартизирана среда – Всички инсталации ще използват еднакви PHP настройки
  4. По-добра сигурност – display_errors е изключен по подразбиране

Допълнителни съвети:

За да видите дали PHP настройките са заредени правилно:

docker exec wordpress_app php -i | grep "memory_limit"

Ако правите промени в php.ini, най-сигурно е да рестартирате контейнера:

docker-compose restart wordpress

За да логвате PHP грешките:

docker exec wordpress_app touch /var/log/php_errors.log
docker exec wordpress_app chown www-data:www-data /var/log/php_errors.log

Стъпка 7: Конфигуриране на WordPress

  1. Изберете език и кликнете "Continue"
  2. Попълнете информацията за администраторския акаунт:
    • Заглавие на сайта
    • Потребителско име (избегнете "admin" за по-добра сигурност)
    • Парола (използвайте силна парола)
    • Вашия email адрес
  3. Кликнете "Install WordPress"
  4. След успешна инсталация, кликнете "Log In" и влезте с вашите данни

Обновяване на WordPress

За да обновите WordPress до най-новата версия, просто изпълнете:

docker-compose pull wordpress
docker-compose up -d

Заключение

Инсталирането на WordPress с Docker Compose е мощен и гъвкав начин за създаване на локална или продукционна среда. Този метод предлага:

  • Лесно управление на зависимостите (PHP, MySQL)
  • Просто копиране и преместване на средата между различни машини
  • Автоматично обновяване на софтуера
  • Добра изолация от основната система

След като сте настроили вашата WordPress инсталация, можете да започнете да инсталирате теми и плъгини, да създавате съдържание и да експериментирате, без да се притеснявате, че ще повредите нещо на вашия основен компютър.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: