В этой статье вы узнаете как использовать Docker-Compose. Мы развернем 'Wordpress' на базе nginx, MySQL и PHP- FPM. Каждая служба имеет свой собственный контейнер, и мы будем использовать изображения из докер-концентрирующего реестра.
Особенности: В Ubuntu 16.04 Права Root
Шаг 1. Установка Докера
Мы начнем с нуля: устанавливаем Docker-Compose вручную с помощью команды apt.
Прежде чем мы начнем, следует установить последние обновления:
sudo apt-get update sudo apt-get upgrade
Настройка репозитория Ubuntu доступна по умолчанию, поэтому мы можем продолжить его установку прямо сейчас:
sudo apt-get install -y docker.io
Когда установка завершится, запустите настройки и добавьте его в автоматический запуск при загрузке:
systemctl start docker systemctl enable docker
Теперь проверьте установленные настройки с помощью команды ниже:
docker run hello-world
Вы увидите приветствие от докера.
Шаг 2. Установка Docker-Compose
Docker-Compose – это скрипт, написанный на языке Python, он доступен на PyPI репозитории Python и может быть установлен с помощью Python Pip. Поэтому нам нужно установить Python и Python PIP на наши системы.
Установите Python и Python-PIP-образы:
sudo apt-get install -y python python-pip
Далее, установите docker-compose с помощью команды pip:
pip install docker-compose
Дождитесь завершения процесса установки. Затем проверьте установку docker-compose с помощью команды:
docker-compose -v
Вы получили версию docker-compose.
Шаг 3. Установка WordPress
Теперь, docker и docker-compose установлены в системе. Мы развернем 'WordPress' на базе интерпретатора PHP с nginx в качестве веб-сервера, и mariadb в качестве базы данных, плюс контейнер, управляемый docker-compose. Каждое приложение (WordPress, nginx и MySQL) будет работать в своем собственном контейнере:
- Сервер nginx: мы используем официальный docker-образ, последнюю версию 'nginx: latest':
-Wordpress: предоставляет некоторые образы docker в докер-концентраторе, мы будем использовать WordPress 4.7 с PHP-FPM 7.0 .
- MySQL: мы будем использовать mariadb в официальном контейнере.
Поэтому нам нужны 3 docker-образа.
Мы не будем работать от root или обычного пользователя Linux. Создайте нового пользователя с помощью команды ниже (рекомендую придумать оригинальное имя пользователя, для примера выбираем пользователя в японском стиле santoku):
useradd -m -s /bin/bash santoku passwd santoku
Теперь добавьте пользователя в докер-группы, чтобы он мог использовать команды настройки, и перезагрузите сервис докера:
usermod -a -G docker santoku
systemctl restart docker
Войдите в пользователя santoku и создайте новый каталог для проекта WordPress:
su -santoku
mkdir -p wordpress-compose cd wordpress-compose/
Далее создайте новый файл под названием Docker-Compose.в формате yml, и новый каталог для проекта.
touch docker-compose.yml mkdir -p nginx/ mkdir -p db-data/ mkdir -p logs/nginx/ mkdir -p wordpress/
Список файлов и каталогов проекта:
'docker-compose.yml - это конфигурационный файл, который вы должны создать, начиная новый проект.
- nginx/: этот каталог, используемый для дополнительной конфигурации nginx'как виртуального хоста и т.д.
db-data/: каталог данных SQL из данных '/var/lib/mysql' не установлен в данные db-каталога.
- журналы: каталог приложения для nginx, mariadb и php-fpm.
- wordpress/: все файлы wordpress будут доступны в этом каталоге.
В директории nginx создайте новый файл для нашего WordPress виртуального хоста. Создайте новый файл в WordPress.conf:
vim nginx/wordpress.conf
Вставьте конфигурацию ниже:
server { listen 80; server_name wp-santoku.co; root /var/www/html; index index.php; access_log /var/log/nginx/santoku-access.log; error_log /var/log/nginx/santoku-error.log; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass wordpress:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
Сохраните файл и выйдите из редактора vim.
Шаг 4 – Настройка Docker-Compose
На этом этапе мы начнем редактирование файла docker-compose.yml. Если вы хотите начать проект docker-compose, убедитесь, что вы создаете файл docker-compose.yml в первую очередь, как мы делаем это ниже.
Отредактируйте docker-compose.yml с помощью vim :
vim docker-compose.yml
Определите ваши услуги на первой линии, мы определим Nginx. Мы используем Nginx последней версия. Настройте сопоставление портов для порта 80 на контейнере в порт 80 на хосте. Затем настройте объемы Docker: объем конфигурации виртуального хоста Nginx, объем файлов журнала Nginx и объем корневого веб-каталога "/ Var / WWW / HTML. Контейнер Nginx связан с WordPress контейнером.
Вставьте конфигурацию ниже:
nginx: image: nginx:latest ports: - '80:80' volumes: - ./nginx:/etc/nginx/conf.d - ./logs/nginx:/var/log/nginx - ./wordpress:/var/www/html links: - wordpress restart: always
Далее определите сервер MySQL. Мы используем изображение MariaDB, последней версии. Настройте сопоставление портов для контейнера на порт 3306 и пароль корня MySQL с переменной средой «MYSQL_ROOT_PASSWORD». Наконец. настройте объем контейнера для каталога данных MySQL.
Вставьте конфигурацию ниже:
mysql: image: mariadb ports: - '3306:3306' volumes: - ./db-data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=aqwe123 restart: always
Далее мы будем настраивать службу WordPress с помощью докер изображения WordPress 4.7 с PHP-FPM 7.0. Вешаем PHP-FPM на порт 9000, подключаем том Docker для директории «/var/www/html» в каталоге хоста «Wordpress», настроим базу данных, определив переменную среду WordPress, и свяжем WordPress с MySQL.
Вставьте конфигурацию ниже:
wordpress: image: wordpress:4.7.1-php7.0-fpm ports: - '9000:9000' volumes: - ./wordpress:/var/www/html environment: - WORDPRESS_DB_NAME=wpdb - WORDPRESS_TABLE_PREFIX=wp_ - WORDPRESS_DB_HOST=mysql - WORDPRESS_DB_PASSWORD=aqwe123 links: - mysql restart: always
После добавления трех частей в docker-compose.yml -файл, сохраните файл и выйдите из редактора vim.
Конфигурация docker-compose готова.
Шаг 5 - запуск docker-compose
Начните создание новых контейнеров с docker-compose. Перейдите на WordPress ,составьте каталог и запустите новые контейнеры, на основе созданного нами файла.
cd ~/wordpress-compose/ docker-compose up -d
Вы можете увидеть результаты выполнения команды. Были созданы три контейнеры. Давайте проверим состояние контейнера с параметром ps:
docker-compose ps
результат показан ниже
Если вы хотите увидеть выход журнала из контейнера, вы можете использовать команды ниже:
docker-compose logs nginx docker-compose logs mysql docker-compose logs wordpress
Контейнер журналов:
Примечание: Если вы видите в контейнере журнала WordPress ошибку в соединении с MySQL, игнорируйте его.
Шаг 6 - Установить WordPress
Прежде чем приступить к этому этапу, давайте проверим доступные/открытые порты в системе. Убедитесь, что есть 3 открытых порта: порт 80, 3306 и порт 9000
netstat -plntu
Результаты приведены ниже:
Теперь откройте веб-браузер и введите URL-адрес сервера или IP-адрес.
http://serverIP/
Вы можете увидеть страницу установки WordPress. Выберите свой язык и нажмите 'продолжить'.
Заполните детали, такие как: название сайта, админа, пользователя, пароль, адрес электронной почты и нажмите кнопку 'установить WordPress'. Вы будете перенаправлены на панель администратора WordPress.
WordPress установлен с помощью docker-compose.
Шаг 7 - доступ в контейнер docker
Это является дополнительным шагом, к тому,чтобы открыть контейнер с docker-compose. Убедитесь, что все контейнеры доступны и проверьте их состояние:
docker-compose ps
У нас уже есть 3 контейнера, теперь мы можем попытаться войти в каждый контейнер. Войдите в первый контейнер nginx с помощью команды docker-compose.
docker-compose exec nginx bash
nginx: имя файла в Docker-Compose yml
bash: выполнение команды в оболочке bash.
Теперь проверяем наши настройки виртуального хоста на WordPress.
cat /etc/nginx/conf.d/wordpress.conf
Файлы доступны в контейнере.
Далее попробуйте войти в контейнер MySQL, а затем в оболочку MySQL с помощью нашего пароля на файле.
docker-compose exec mysql bash mysql -u root -p TYPE MYSQL ROOT PASSWORD
Посмотреть список баз данных:
show databases;
Вы увидите нашу базу данных WordPress.
В ' WordPress ' контейнере, вы увидите все файлы WordPress.
docker-compose exec wordpress bash ls -lah
Все контейнеры доступны.
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux