Docker nginx php fpm mariadb

Развертывание WordPress с NGINX, PHP-FPM и MariaDB с помощью Docker Compose

Docker – это программное обеспечение, которое может упаковать ваше приложение, его зависимости, системные инструменты, системные библиотеки и настройки в единый виртуальный контейнер. Этот комбинированный пакет, содержащий все необходимое для запуска вашего приложения, называется образом контейнера Docker . Этот образ представляет собой автономный исполняемый программный пакет, который надежно работает на любом сервере – Linux, Windows, macOS, публичное облако или частное облако. Также эти образы можно использовать для запуска приложения как изолированного процесса в пространстве пользователя.

Рассмотрим как развернуть WordPress с Nginx, PHP-FPM и MariaDB и PhpMyAdmin с помощью Docker Compose на компьютере с Ubuntu.

1. Подготовка хост-машины

sudo apt update && sudo apt-get upgrade sudo apt-get install -y docker.io

Добавим докер в автоматический запуск при загрузке ОС:

systemctl start docker systemctl enable docker

2. Установка Docker-Compose

Docker-Compose доступен в репозитории, но его версии немного отстают от последней. Поэтому скачаем актуальную версию с GitHub

sudo wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.26.0/docker-compose-Linux-x86_64
sudo chmod +x /usr/local/bin/docker-compose

После завершения процесса проверьте установленную версию docker-compose:

3. Установка WordPress с nginx, PHP, MariaDB, PhpMyAdmin

В целях безопасности, мы не будем работать через root, а добавим существующего пользователя в группу docker и перезагрузим службу:

usermod -a -G docker $USER systemctl restart docker

Создадим каталоги в которых будут хранится данные.

mkdir -p wordpress-compose cd wordpress-compose/ touch docker-compose.yml mkdir -p nginx/ mkdir -p logs/ mkdir -p logs/nginx mkdir -p data/ mkdir -p data/html mkdir -p data/mysql

docker-compose.yml — это конфигурационный файл, в котором мы описываем какие контейнеры запускать, их настройки и связи между контейнерами.

— nginx/: каталог используемый для дополнительной конфигурации nginx, как виртуального хоста и т. д.
— logs/: каталог логов для nginx, mariadb и php.
— data/: каталог с файлами wordpress и файлы базы данных.

Далее в директории wordpress-compose/nginx создайте новый файл с конфигурацией nginx.

nano ~/wordpress-compose/nginx/nginx.conf

Вставьте следующее содержимое:

Сохраните файл и выйдите из редактора

4. Настройка Docker-Compose

Мы будем использовать Nginx последней версии. Настроим сопоставление портов для порта 8080 на хосте с портом 80 в контейнере. Настроим конфигурацию виртуального хоста Nginx, файлы журнала Nginx и корневой каталог веб-сервера /var/www/html. Также укажем что контейнер Nginx связан с контейнером WordPress.

Отредактируем файл docker-compose.yml:

nginx: image: nginx:latest volumes: - ./nginx:/etc/nginx/conf.d - ./data/html:/var/www/html ports: - 8080:80 links: - wordpress

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

Далее определим сервер MySQL, мы используем образ MariaDB последней версии. Назначим root пароль MySQL, имя базы данных, пользователя базы и его пароль. Для этого, вставьте в конфигурационный docker-compose.yml текст:

 mysql: image: mariadb volumes: - ./data/mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 4m3SxCpaQb*6LB# MYSQL_DATABASE: db_wordpress MYSQL_USER: user_wp MYSQL_PASSWORD: 9UqfqeE9#hn2@t^ restart: always

Теперь мы будем настраивать WordPress с помощью образа WordPress с PHP-FPM 7.4. Подключаем том Docker для директории /var/www/html в каталоге хоста WordPress, настроим базу данных, определив переменную среду WordPress, и свяжем WordPress с MySQL. Данные по настройке базы данных должны соответствовать предыдущей секции. Вставьте в конфигурационный docker-compose.yml текст:

 wordpress: image: wordpress:php7.4-fpm-alpine volumes: - ./data/html:/var/www/html depends_on: - mysql environment: WORDPRESS_DB_HOST: mysql MYSQL_ROOT_PASSWORD: 4m3SxCpaQb*6LB# WORDPRESS_DB_NAME: db_wordpress WORDPRESS_DB_USER: user_wp WORDPRESS_DB_PASSWORD: 9UqfqeE9#hn2@t^ WORDPRESS_TABLE_PREFIX: wp_ links: - mysql restart: always

Для управления СУБД прикручиваем phpmyadmin и на порт 8081:

pma: image: phpmyadmin/phpmyadmin restart: always links: - mysql:mysql ports: - 8081:80 environment: PMA_HOST=mysql MYSQL_USERNAME=root MYSQL_ROOT_PASSWORD: 4m3SxCpaQb*6LB#

После добавления составных частей в docker-compose.yml — файла, сохраните его и выйдите из редактора. Конфигурация docker-compose готова. У Вас должен получиться файл с таким содержимым:

version: '3' services: mysql: image: mariadb volumes: - ./data/mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 4m3SxCpaQb*6LB# MYSQL_DATABASE: db_wordpress MYSQL_USER: user_wp MYSQL_PASSWORD: 9UqfqeE9#hn2@t^ restart: always wordpress: image: wordpress:php7.4-fpm-alpine volumes: - ./data/html:/var/www/html depends_on: - mysql environment: WORDPRESS_DB_HOST: mysql MYSQL_ROOT_PASSWORD: 4m3SxCpaQb*6LB# WORDPRESS_DB_NAME: db_wordpress WORDPRESS_DB_USER: user_wp WORDPRESS_DB_PASSWORD: 9UqfqeE9#hn2@t^ WORDPRESS_TABLE_PREFIX: wp_ links: - mysql restart: always nginx: image: nginx:latest volumes: - ./nginx:/etc/nginx/conf.d - ./data/html:/var/www/html ports: - 8080:80 links: - wordpress pma: image: phpmyadmin/phpmyadmin restart: always links: - mysql:mysql ports: - 8081:80 environment: MYSQL_ROOT_PASSWORD: 4m3SxCpaQb*6LB#

5. Запуск docker-compose

Начнем создание новых контейнеров с docker-compose. Перейдите в каталог WordPress и запустите новые контейнеры на основании созданного нами файла.

cd ~/wordpress-compose/ docker-compose up -d

Вы можете увидеть результаты выполнения команды. Были созданы четыре контейнера. Давайте проверим состояние контейнеров.

Если вы хотите увидеть вывод журнала из контейнера, вы можете использовать команды ниже:

docker-compose logs nginx docker-compose logs mysql docker-compose logs wordpress

6. Установка CMS WordPress

Теперь откройте веб-браузер и введите URL-адрес сервера или IP-адрес.

Вы должны увидеть страницу установки WordPress. Выберите свой язык и нажмите ‘продолжить’.

Если у Вас не открылась страница установки, посмотрите логи nginx, а также файл hosts на компьютере с которого вы пытаете открыть сайт.
Заполните детали, такие как: название сайта, имя пользователя, пароль, адрес электронной почты и нажмите кнопку ‘Установить WordPress’. Вы будете перенаправлены на панель администратора WordPress.

Также по адресу http://server_IP:8081/ доступен phpMyAdmin

WordPress установлен с помощью docker-compose.

7. Доступ в контейнеры docker

Чтобы убедиться, что все контейнеры доступны и проверить их состояние введите команду:

У нас уже 4 контейнера, теперь мы можем попытаться войти в каждый. Войдите в первый контейнер nginx с помощью команды docker-compose.

docker-compose exec nginx bash

nginx – имя файла в Docker-Compose yml
bash – выполнение команды в оболочке bash.

Теперь проверим наши настройки виртуального хоста на WordPress.

cat /etc/nginx/conf.d/nginx.conf

Файл доступен в контейнере.

Далее попробуйте войти в контейнер MySQL, а затем в оболочку MySQL с помощью нашего пароля на файле.

docker-compose exec mysql bash mysql -u root -p

Посмотреть список баз данных:

Вы увидите нашу базу данных WordPress.

В контейнере WordPress вы увидите все файлы CMS WordPress.

docker-compose exec wordpress bash ls -lah

Источник

Настройка веб-сервера в Docker ( NGINX + PHP + MariaDB)

Дан­ную кон­фи­гу­ра­цию мож­но исполь­зо­вать для быст­ро­го раз­вер­ты­ва­ния сай­тов или для локаль­ной разработки.

NGINX + PHP + PHP-FPM

Реко­мен­ду­ет­ся каж­дый мик­ро­сер­вис поме­щать в свой отдель­ный кон­тей­нер, но мы (для отдель­но­го при­ме­ра) веб-сер­вер с интер­пре­та­то­ром PHP поме­стим в один и тот же имидж, на осно­ве кото­ро­го будут созда­вать­ся контейнеры.

Создание образа

Созда­дим ката­лог, в кото­ром будут нахо­дить­ся фай­лы для сбор­ки обра­за веб-сервера:

mkdir -p /opt/docker/web-server

Пере­хо­дим в создан­ный каталог:

* где:
1) ука­зы­ва­ем, какой берем базо­вый образ. В нашем слу­чае, CentOS 8.
3) зада­ем для инфор­ма­ции того, кто создал образ. Ука­зы­ва­ем свое имя и адрес элек­трон­ной почты.
5) созда­ем пере­мен­ную окру­же­ния TZ с ука­за­ни­ем вре­мен­ной зоны (в нашем при­ме­ре, мос­ков­ское время).
7) запус­ка­ем обнов­ле­ние системы.
8) уста­нав­ли­ва­ем паке­ты: веб-сер­вер nginx, интер­пре­та­тор php, сер­вис php-fpm для обра­бот­ки скрип­тов, модуль php-mysqli для рабо­ты php с СУБД MySQL/MariaDB.
9) уда­ля­ем ска­чан­ные паке­ты и вре­мен­ные фай­лы, обра­зо­вав­ши­е­ся во вре­мя установки.
10) добав­ля­ем в кон­фи­гу­ра­ци­он­ный файл nginx стро­ку daemon off, кото­рая запре­тит веб-сер­ве­ру авто­ма­ти­че­ски запу­стить­ся в каче­стве демона.
11) созда­ем ката­лог /run/php-fpm — без него не смо­жет запу­стить­ся php-fpm.
13) копи­ру­ем содер­жи­мое ката­ло­га html, кото­рый нахо­дит­ся в том же ката­ло­ге, что и dockerfile, в ката­лог /usr/share/nginx/html/ внут­ри кон­тей­не­ра. В дан­ной пап­ке дол­жен быть наше веб-приложение.
15) запус­ка­ем php-fpm и nginx. Коман­да CMD в dockerfile может быть толь­ко одна.
17) откры­ва­ем порт 80 для рабо­ты веб-сервера.

В рабо­чем ката­ло­ге созда­ем пап­ку html:

Источник

Читайте также:  Php magic quotes setting
Оцените статью