Первая установка Docker в Ubuntu
Либо вы выбираете Docker-провайдера, такого как Bluemix, либо получаете виртуальную машину от softlayer или любого другого провайдера.В моем случае я выбрал виртуальный сервер, поэтому мне пришлось установить докер на Ubuntu LTS.Что действительно легко.По сути, вы добавляете новую запись репозитория в ваши исходники apt и устанавливаете последние стабильные пакеты docker.На get.docker.com также есть скрипт, но я не чувствую себя комфортно для запуска скрипта прямо из сети с доступом root.Но это зависит от вас.
wget -qO- https://get.docker.com/ | sh
Docker в linux не содержит docker-compose по сравнению с установкой docker, например, на Mac.Установка docker compose проста.Скрипт docker compose можно скачать с github здесь: https://github.com/docker/compose/releases.
Docker-compose
Docker-compose заботится о настройке docker, содержащей более одного контейнера docker, включая сеть, а также базовый мониторинг.Следующий скрипт запускает и собирает весь докер-контейнер с помощью nginx, mysql и wordpress.Он также экспортирует тома в файловой системе хоста для упрощения резервного копирования и сохранения при перестроении док-контейнера и отслеживает, работают ли док-контейнеры.
version: '3'
services:
db:
image: mysql:latest
volumes:
- ./db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: easytoguess
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: eveneasier
wordpress:
depends_on:
- db
image: wordpress:latest
restart: always
volumes:
- ./wordpress:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: eveneasier
WORDPRESS_DB_NAME: wordpress
nginx:
depends_on:
- wordpress
restart: always
build:
context: .
dockerfile: Dockerfile-nginx
ports:
- "80:80"
Mysql - первый контейнер, который мы открываем с переменными средыдля базы данных, как имя пользователя, пароль и имя базы данных.Строка 7 заботится о том, чтобы сохранить файл базы данных вне контейнера Docker, чтобы вы могли удалить Docker-контейнер, запустить новый и при этом иметь и запускать ту же базу данных.Укажите это там, где вы хотите это иметь.В этом случае в «дБ» в том же каталоге.Также убедитесь, что вы придумали приличные пароли.
Второй контейнер - это WordPress.То же самое и с папкой хоста в строке 21. Кроме того, убедитесь, что у вас настроены тот же пользователь, пароль и имя базы данных, что и в конфигурации контейнера mysql.
Последним является nginx в качестве контейнера, обращенного к Интернету.Вы выставляете порт 80 здесь.В то время как вы просто указываете контейнер в двух других, вы настраиваете Dockerfile и контекст сборки для настройки вашего nginx в соответствии с настройками сети.Если вы хотите разместить только статические файлы, вы можете добавить это через монтирование тома, но в нашем случае нам нужно настроить сам nginx, поэтому нам нужен настроенный Dockerfile, как описано ниже.
Dockerfile для установки nginx
FROM nginx:latest
COPY default.conf /etc/nginx/conf.d/default.conf
VOLUME /var/log/nginx/log/
EXPOSE 80
Этот dockerfile наследует все от последнего nginx и копирует в него файл default.conf.В следующей главе рассказывается, как настроить файл конфигурации.
Файл конфигурации Nginx
server {
listen 80;
listen [::]:80;
server_name www.23-5.eu ansi.23-5.eu;
access_log /var/log/nginx/log/unsecure.access.log main;
location / {
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_pass http://wordpress;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
В строке 2 и 3 настраивается порт, который мы хотим прослушивать.Нам нужен один для ip4 и один для ip6.Важной является конфигурация прокси в строках с 8 по 15. В строке 11 все вызовы перенаправляются на «/» (без указания пути в URL) на сервер WordPress.Поскольку мы использовали для этого docker-compose, docker заботится о том, чтобы адрес был доступен через внутренний DNS-сервер.Строка 13-15 переписывает заголовок http, чтобы сопоставить все с другим URL-адресом, в противном случае в докере мы получим автоматически сгенерированные ссылки, указывающие на http://wordpress
Запустите систему
Если все настроено, а docker-compose.yml, default.conf, Dockerfile-nginx и папки db и wordpress находятся в одной папке, мы можем начать все, находящееся в этой папке, с помощью:
docker-compose up --build -d
Параметр «-d» запускает настройку в фоновом режиме (демон).Для самого первого запуска я бы рекомендовал использовать его без параметра «-d», чтобы увидеть все сообщения отладки.