Docker compose на примере WordPress

В предыдущей статье мы разобрались с docker compose, в этой же разберем все на примере создание WordPress проекта. Надеюсь в своей профессиональной карьере вам не прийдется работать с вордпрессом! Данный пример я взял с официальной документации докера, оригинал можете почитать здесь. Приступим!

Создаем docker compose

Давайте создадим папку для нашего проекта в которой поместим docker compose файл. В нее поместим необходимые ресурсы для нашего проекта. В первую очередь – знакомый нам файл docker-compose.yml в котором будет вот это вот все происходить. Давайте откроем терминал и перейдем в эту папку. Я ее назвал wp_docker

cd wp_docker

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

Для того, что бы при перезапуске контейнеров у нас не удалялись данные из базы – пропишем volumes. Файл не должен вас особо удивлять, ибо структура и параметры должны быть вам уже знакомы. Если остались неясности – можете освежить прочитав предыдущую статью Docker Compose. Обзор для начинающих. В итоге, файл будет выглядеть следующим образом:

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

На счет большинства параметров – вы должны быть знакомы с ними. Мы использовали образ mysql версии 5.7, прописали env параметры для подключения к базе данных. Единственное, в чем может быть здесь вопрос – это volumes. Именно он нам дает возможность хранить данные базы данных при перезапуске контейнера.

Второй сервис – это сам WordPress. Как видим – он зависит от базы данных, что в принципе, очевидно. Так же здесь прописаны env переменные. Для более детального ознакомления можете открыть документацию по этому образу на докерхабе которой будет детально описаны все параметры.

Запускаем WordPress на docker.

Подготовительные работы завершены и пришла очередь запустить docker контейнеры, которые развернут наше приложение, в данном случае WordPress.

Для того, что бы запустить – много ума не надо. Достаточно выполнить известную нам уже команду:

docker-compose up -d

Параметр -d выполнит команду в фоновом режиме. Она же, в свое время, запустит контейнеры вордпресса и базы данных, стянет нужные образы. Все что мы уже знаем и умеем.

Вот что вывело в мою консоль:

Creating network "wp_docker_default" with the default driver
Creating volume "wp_docker_db_data" with default driver
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
a076a628af6f: Pull complete
02bab8795938: Pull complete
657d9d2c68b9: Pull complete
f47b5ee58e91: Pull complete
2b62153f094c: Pull complete
60b09083723b: Pull complete
1701d4d0a478: Pull complete
bae0c4dc63ea: Pull complete
a1c05958a901: Pull complete
5964d339be93: Pull complete
17c19430ed9f: Pull complete
1c16920b970c: Pull complete
1fab8f583d66: Pull complete
473b1e99afb3: Pull complete
7319f9ced717: Pull complete
0fde4d7f1f2c: Pull complete
b8ec91c53cb2: Pull complete
c157b7dc82cb: Pull complete
ffcbbf85de97: Pull complete
426d16d4eb4f: Pull complete
Digest: sha256:2d5f306e039a637bd86d9d1cfc1b465c987898e2784e4279754b9d3c2737121b
Status: Downloaded newer image for wordpress:latest
Creating wp_docker_db_1 ... done
Creating wp_docker_wordpress_1 ... done

Если в вашей консоли что-то кардинально отличается или, не дай бог, все написано красным цветом – есть повод немного паниковать и разобраться с проблемой. Надеюсь такого не произойдет – ибо я не планировал делать обзор на все возможные внештатные ситуации, но в этом случае мы общими силами решим их в комментариях.

Запуск WordPress в браузере

Теперь пришла очередь запустить WordPress в браузере что бы, уже визуально, убедиться что docker нам успешно развернул наше приложение.

Как вы помните мы прокидывали порт 8000:80. Так вот, наша веб страница будет доступна по адресу http://localhost:8000

Перейдите по ней и завершите установку Вордпресса. Ничего сложного не должно возникнуть, это всего лишь какой-то WordPress. Особенно, если учитывать что вы читаете статью по докеру. После установки создайте новую запись в админке. Я потом покажу для чего. Честно.

Остановка и удаление контейнеров. Docker volumes.

Поигрались и хватит. Я надеюсь вам не прийдется всерьез устанавливать вордпресс. Давайте остановим наши контейнеры

docker-compose down

Обновление страницы в браузере покажет нам ошибку. И все сделает правильно, так как мы остановили контейнеры. Давайте теперь увидим немного магии docker volume. Запустите еще раз проект как мы делали это выше. Теперь зайдите в браузер и снова обновите страничку. Все снова заработает. А мило то – что запись, которую вы создали – останется. А все благодаря docker volumes. Так как после остановки и удаления контейнеров данные остались на вашей машине.

Если вы захотите начисто все подчистить – добавьте параметр --volumes в команду:

docker-compose down --volumes

Она подчистит не только контейнеры, но и volumes в которых у нас хранились данные. Одно слово позволило нам все начать с чистого листа. Жаль что так в жизни нельзя.

Leave a Reply