Как поднять сайт в Docker

5 min read

Введение

В данной статье я поделюсь опытом использования 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 git@github.com: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).