Установка WordPress через Docker. Простой docker-compose. (Install wordpress with docker-compose)

470

Создаем файл docker-compose.yml

Наша сборка будет состоять из 3-ех стандартных сервисов:

  • Сервис WordPress. Будет включать в себя сервер и файлы CMS
  • Сервис для БД, в нашем случае MySQL
  • Ну и так же поставим phpMyAdmin

Службы будут описаны и указаны в файле docker-compose.yml, который сначала необходимо создать в нашем каталоге:

mkdir wordpress-docker
cd wordpress-docker
touch docker-compose.yml

Можем открыть папку в любом удобном редакторе

У нас должен быть пустой файл docker-compose.yml внутри папки wordpress-docker. Открываем файл и прописываем сервис для mysql.

version: '3'
services:
  db:
    image: mysql:8
    container_name: mysql
    restart: always
    command: "--default-authentication-plugin=mysql_native_password"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wpdb
      MYSQL_USER: user
      MYSQL_PASSWORD: password

В разделе сервисов мы добавили первое, которое называется db. Этот сервис связан образом mysql и, следовательно, предоставляет необходимый экземпляр базы данных MySQL.

command: "--default-authentication-plugin=mysql_native_password"

Эта команда

Эта команда позволяет нам запустить базу с включенной собственной аутентификацией по паролю.
Кроме того, нам нужно установить следующие переменные среды: MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER и MYSQL_PASSWORD. Можете прописать свои.

Добавляем WordPress сервис

Добавляем соотвествующий кусок кода описывающий сервис

wordpress:
    image: wordpress
    container_name: wordpress
    restart: always
    volumes:
      - ./:/var/www/html/
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wpdb
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password
    ports:
      - 8080:80
      - 443:443

Здесь мы используем образ wordpress. Вы можете указать любую версию вида wordpress:4.9.8. Я буду использовать последнюю актуальную.


Свойство volumes используется для подключения каталога /var/www/html контейнера к локальной папке приложения. Все изменения, которые мы будем вносит в файлы папки нашего приложения буду отображать сразу в контейнере.


Кроме этого, мы снова используем раздел environment для установки значений для четырех переменных: WORDPRESS_DB_HOST, WORDPRESS_DB_NAME, WORDPRESS_DB_USER и WORDPRESS_DB_PASSWORD.
Значение, присвоенное WORDPRESS_DB_HOST, должно быть идентификатором сервиса базы данных ( в нашем случае db).

И мы обязательно сопоставим внутренний порт 80 с внешним портом 8080, чтобы WordPress был доступен через http://localhost:8080.

Добавляем phpMyAdmin

Вставляем код

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 3333:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORT: password

Здесь мы используем образ phpmyadmin/phpmyadmin (https://hub.docker.com/r/phpmyadmin/phpmyadmin).
Включаем доступ к базе данных для phpMyAdmin. Устанавливаем две переменные среды для этой службы:
PMA_HOST: необходимо указать имя службы базы данных (в нашем случае db)
MYSQL_ROOT_PASSWORD: необходимо установить пароль root MySQL (в нашем случае это просто password)

Внутренний порт 80 (на котором по умолчанию доступен phpMyAdmin) сопоставлен с внешним портом 3333, чтобы мы могли получить доступ к веб-интерфейсу пользователя phpMyAdmin с помощью URL http://localhost:3333 позже.

Итоговый файл docker-compose.yml

Это полная версия получившегося файла:

version: '3'
services:
  db:
    image: mysql:8
    container_name: mysql
    restart: always
    command: "--default-authentication-plugin=mysql_native_password"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wpdb
      MYSQL_USER: user
      MYSQL_PASSWORD: password


  wordpress:
    image: wordpress:4.9.8
    container_name: wordpress
    restart: always
    volumes:
      - ./:/var/www/html/
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wpdb
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password
    ports:
      - 8080:80
      - 443:443

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 3333:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORT: password

В целом все. Нам остается только запустить установщик наших сервисов:

docker-compose up

Заходим на наш http://localhost:8080 и получаем стартовую страницу установки:

Отлично все получилось.

0
 

ERROR: for resume Cannot start service resume: OCI runtime create failed: container_linux.go:349: starting container process caused

501
ERROR: for resume Cannot start service resume: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"process_linux.go:432: running prestart hook 0 caused \\\"error running hook: exit status 2, stdout: , stderr: fatal error: runtime: out of memory\\\\n\\\\nruntime stack:\\\\nruntime.throw(0x5626704ce57f, 0x16)

Ошибка при запуске докер контейнеров.
В моем случае это был недостаток оперативной памяти. 1gb всего памяти на сервере, из них в использовании 0.9gb. Соответсвенно на создание нового контейнера не хватало ресурса..

Сервер был нулевый изначально. SWAP не был настроен.
Расширил память, установил все запустилось.

Можно было перейти на тариф другой, но цена кусалась, поэтому решил этим вариантом.

Хорошая инструкция
https://losst.ru/nastrojka-swap-v-ubuntu-16-04

0