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 в которых у нас хранились данные. Одно слово позволило нам все начать с чистого листа. Жаль что так в жизни нельзя.