Введение
В данной статье я поделюсь опытом использования Docker-контейнера при развертывании окружения для веб-разработки. Контейнер будет включать в себя Nginx, PHP, MySQL, Redis и PHPMyAdmin. Итак, главный вопрос — зачем использовать Docker?
Наша команда разработки в разное время насчитывает более 10 человек, у каждого из которых должен быть поднят актуальный локальный образ сайта. С учетом того, что у нас есть люди, работающие на Windows, Linux, MacOS, обычно уходит немало времени на то, чтобы помочь всем разобраться с настройкой веб-сервера и другими неочевидными вещами из области работы с окружением.
Docker — это инструмент, позволяющий создавать процессы, изолированные в отдельных контейнерах, некоторых подобиях вирутальных операционных систем. Каждый процесс (php, nginx, mysql и прочие) запускается в отдельном окружении, но связан с другими процессами средствами самого Docker'а.
Docker делает за вас все шаги по установке пакетов, настройке сервисов и конфигурационных файлов. По сути, он за вас автоматически развернет все окружение, которое практически сразу будет готово к работе.
Первые шаги
Установка Docker
На официальном сайте Docker вы можете загрузить программное обеспечение для любой операционной системы. Однако, если вы хотите работать в Windows, будьте готовы к тому, что Docker в ней запускает сервисы в настоящем виртуальном окружении (например, через VirtualBox), что сказывается на производительности.
Установка в Linux
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118 E89F3A912897C070ADBF76221572C52609D
sudo apt-get update
sudo apt-get install docker-engine
sudo service docker start
Установка Docker-compose
Мы будем запускать PHP, Nginx и другие сервисы в отдельных контейнерах и настраивать связи между ними, для этого нам понадобится программа Docker-compose . В Windows она поставляется совместно с докером, для Linux вы можете ознакомиться с инструкцией по установке.
Установка в Linux
curl -L "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
Загружаем файл конфигурации
После того, как мы установили Docker , нужно скачать заранее подготовленные нашей командой конфиги. Для этого воспользуемся Git и клонируем репозиторий . Данные команды нужно выполнять из той директории, в которой вы желаете хранить все файлы нашего сайта .
git clone [email protected]:codex-team/docker.git codex-docker
cd codex-docker
Далее выполним команды, которые загрузят все необходимые пакеты и соберут контейнер.
docker-compose build
docker-compose up
Теперь у вас готов к работе контейнер для работы с любыми сайтами , использующими Nginx, PHP и.т.д. Не закрывайте текущую консоль (в ней будет запущен docker-compose).
В директории www теперь можно начать создавать сайт или клонировать репозиторий и работать над ним. Следующая часть статьи будет посвящена запуску сайта CodeX.
Настройка сайта CodeX
Перейдем к непосредственной настройке сайта команды Codex. Откройте новое окно терминала. Первым делом нужно загрузить в папку www исходные коды .
git clone https://github.com/codex-team/codex www
В вашей папке docker появилась директория www, где расположены все необходимые файлы. Эта папка будет являться "расшаренной", то есть, ее будут использовать одновременно и виртуальные контейнеры и ваша локальная операционная система.
Выполните команду docker ps чтобы узнать имя контейнера db (скорее всего он будет называться codexdocker_db_1).
Перейдите в директорию codex-docker. Для того, чтобы заполнить базу данных mysql, выполните следующую команду (codex docker_db_1 - имя контейнера).
docker exec -i codexdocker_db_1 mysql -uroot -proot < configs/codex-db.sql
Чтобы сайт был доступен по адресу http://codex.dev:8081/ с вашей локальной машины, добавим его в hosts файл. Для Windows необходимо добавить строку 127.0.0.1 codex.dev в файл C:\Windows\System32\drivers\etc\hosts, для Linux достаточно выполнить команду.
echo "127.0.0.1 codex.dev" >> /etc/hosts
Далее необходимо скопировать конфигурационные файлы, отвечающие за настройки базы данных и аутентификации.
cp configs/database.php www/application/config/database.php
cp configs/oauth.php www/application/config/oauth.php
Для того, чтобы у вас заработала авторизация через GitHub, отредактируйте файл oauth.php, заполнив учетные данные приложения GitHub.
Фреймворк Kohana, на котором написан наш сайт, требует для своих нужд две директории с правами на запись в них.
mkdir www/application/cache
mkdir www/application/logs
сhmod 777 www/application/logs/ www/application/cache/
Теперь вы можете зайти на сайт по адресу http://codex.dev:8081/.
Управлять базой данных можно в PHPMyAdmin по адресу http://codex.dev:8082/. (server - db, username - root, password - root).