🐳 Как Π΄Π° инсталирамС WordPress с Docker ΠΈ Docker Compose

🐳 Как Π΄Π° инсталирамС WordPress с Docker ΠΈ Docker Compose

Π‘ΡŠΡ€Π·Π° ΠΈ сигурна инсталация Π½Π° WordPress Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ


🧠 Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Ако искаш Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡˆ WordPress сайт Π±ΡŠΡ€Π·ΠΎ, сигурно ΠΈ лСсно β€” Docker ΠΈ Docker Compose са Ρ‚Π²ΠΎΠΈΡ‚Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈ приятСли. Π’Π΅ Ρ‚ΠΈ позволяват Π΄Π° създаваш напълно ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π° ΠΈ прСносима срСда Π·Π° уСбсайта си само с няколко ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.

Π’ Ρ‚ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Ρ‰Π΅ Ρ‚ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρˆ WordPress ΠΈ MySQL с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° docker-compose.yml. ИзползвамС вСрсия 8 Π½Π° MySQL ΠΈ послСдната стабилна вСрсия Π½Π° WordPress с PHP 8.2.


πŸ“¦ Изисквания

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρˆ, ΡƒΠ²Π΅Ρ€ΠΈ сС, Ρ‡Π΅ имаш инсталирани:

  • Docker
  • Docker Compose
  • .env Ρ„Π°ΠΉΠ» с Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (описан ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ)

πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

wordpress-docker/
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ .env
β”œβ”€β”€ config/
β”‚ └── php.ini (ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€)

πŸ” БъздаванС Π½Π° .env Ρ„Π°ΠΉΠ»

Бъздай Ρ„Π°ΠΉΠ» .env със слСдното ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ (Π·Π°ΠΌΠ΅Π½ΠΈ със свои стойности):

MYSQL_ROOT_PASSWORD=supersecret
MYSQL_DATABASE=wordpress
MYSQL_USER=wpuser
MYSQL_PASSWORD=wppassword

πŸ›  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}
      MYSQL_ROOT_HOST: 127.0.0.1
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

  wordpress:
    image: wordpress:6.5.3-php8.2-apache
    container_name: wordpress_app
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "8070:80"
    restart: always
    volumes:
      - wordpress_data:/var/www/html
      - ./config/php.ini:/usr/local/etc/php/conf.d/custom.ini  # ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_SITEURL: https://bai-hui.eu
      WORDPRESS_HOME: https://bai-hui.eu
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
      interval: 30s
      timeout: 5s
      retries: 3

volumes:
  db_data:
    driver: local
  wordpress_data:
    driver: local


πŸ§ͺ Π‘Ρ‚Π°Ρ€Ρ‚ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉ всичко с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:

Terminal
docker compose up -d

Π‘Π»Π΅Π΄ няколко сСкунди Ρ‰Π΅ имаш Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ WordPress сайт Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π½Π°:
πŸ“ http://localhost:8070 (ΠΈΠ»ΠΈ https://bai-hui.eu ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ reverse proxy)


πŸ“ Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° конфигурация (ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€)

1. php.ini Π·Π° настройки

Ако искаш Π΄Π° добавиш настройки Π½Π° PHP ΠΊΠ°Ρ‚ΠΎ upload_max_filesize ΠΈΠ»ΠΈ memory_limit, създай Ρ„Π°ΠΉΠ» config/php.ini:

Terminal
upload_max_filesize=64M
post_max_size=64M
memory_limit=256M

2. ОбновяванС

Π—Π° Π΄Π° обновиш вСрсиитС Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅, изпълни:

Terminal
docker compose pull
docker compose up -d

3. Π‘ΠΏΠΈΡ€Π°Π½Π΅ ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅

Terminal
docker compose down

Ако искаш Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅Ρˆ ΠΈ ΠΎΠ±Π΅ΠΌΠΈΡ‚Π΅ (Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΡˆ Π΄Π°Π½Π½ΠΈ):

Terminal
docker compose down -v

πŸ” Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° сигурност

  • Използвай traefik ΠΈΠ»ΠΈ nginx с Let’s Encrypt Π·Π° HTTPS
  • Π Π°Π·Ρ€Π΅ΡˆΠΈ само ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ IP адрСси Π΄ΠΎ wp-admin
  • Π‘ΠΊΡ€ΠΈΠΉ xmlrpc.php ΠΈ REST API Π°ΠΊΠΎ Π½Π΅ Π³ΠΈ използваш
  • Бъздай ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅Π½ backup Π½Π° wordpress_data ΠΈ db_data

πŸ“˜ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Docker ΠΈ Compose Π·Π° WordPress Ρ‚ΠΈ Π΄Π°Π²Π°:

βœ… ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»
βœ… Бигурност
βœ… Π‘ΡŠΡ€Π·ΠΈΠ½Π°
βœ… ЛСсна миграция ΠΈ бСкъп
βœ… ЛСсна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π²ΠΈ Π·Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° статията! Ако Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…Ρ‚Π΅ информацията Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π°Ρ€ΠΈΡ‚Π΅ посрСдством Π±ΡƒΡ‚ΠΎΠ½ΠΈΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ: πŸ”°