Skip to content

patrikap/dosk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DoSK

Docker Starter Kit - стартовое окружение php-разработчика основанное на docker.

Версионирование образов

Папки без указания версий - текущая актуальная версия для ведения разработки. Если она устарела, или нужна специфическая версия - заводим отдельную папку для образа, с указанием версии. Например понадобился php-fpm версии 8.0, а текущий 7.4. Создаём рядом папку php-fpm-8.0 разворачиваем конкретный образ в нём.

Описание файлов и каталогов

  • /app - каталог с приложением, либо подпапки
  • /data - каталог с данными от БД, эластика и т.п.
  • /docker - каталог с файлами настройки образов
  • /scripts - каталог с вспомогательными скриптами
  • .env.example - пример файла переменных окружения
  • docker-compose.yml - основной файл сборки контейнеров

Первоначальная настройка

Для Linux

Файл локального окружения

Просто копируем заготовку в .env файл.

$ cp ./.env.example ./.env 

В .env указываем необходимые переменные окружения.

Пользователь и группа, для запуска web-сервера

Перед началом использования Linux-пользователям надо добавить группу и пользователя, а так же включить своего пользователя в эту группу. Сделать это можно так:

$ sudo groupadd --gid 1002 --system containers_group
$ sudo useradd --uid 1002 --system --shell /bin/false --gid 1002 containers_user
$ sudo usermod -aG containers_group $USER

Этот пользователь и группа будут использоваться для nginx и php-fpm в контейнерах, для того чтобы они могли общаться через unix socket. Не уверен что выполненно полностью корректно, с точки зрения безопасности, но для локального окружения сойдёт.

Строки containers_user и containers_group можно заменить по вкусу, они роли не играют, но я бы советовал оставить такими же - для единообразия. UID и GID, указанные как 1002, лучше уточнить в docker-compose.yml, их при необходимости тоже можно заменить.

Настройки ядра

Для Elasticsearch

Для нормальной работы ElasticSearch желательно поправить следующие параметры ядра /etc/sysctl.d/99-sysctl.conf:

vm.max_map_count=262144
# пороговый процент свободной оперативной памяти, для использования файла подкачки
vm.swappiness=10

Для этого нужно добавить вышеуказанную строку в файл /etc/sysctl.conf или в последний файл в каталоге /etc/sysctl.d. Для вступления изменений в силу нужно перезагрузиться, или применить вручную:

$ echo 262144 > /proc/sys/vm/max_map_count

Для Windows

to be continue...

Использование

hosts файл

Необходимо добавить доменные имена в файл hosts

$ sudo echo "127.0.0.1  app.lc" >> /etc/hosts 

Скрипты запуска

Размещены в каталоге ./scripts. Нижеописанные скрипты удобно использовать для отладки образов, или просто для локального запуска:

  • init.sh служит для инициализации (проверено на Ubuntu 18.04)
  • rebuild.sh служит хелпером для пересборки конкретного контейнера
  • shell.sh запускает шелл для пользователя в контейнере app

Скрипты размещённые в папках с образами:

  • build.sh нужен для сбора образа
  • run.sh нужен для запуска контейнера в ручную

Скрипты не нужны при запуске с помощью Docker compose.

Использование docker-compose

Можно использовать docker-compose.yml из консоли, с командой docker-compose:

$ docker-compose -f docker-compose.yml build
$ docker-compose -f docker-compose.yml up
$ docker-compose -f docker-compose.yml down

Запуск окружения из PHPStorm

В PHPStorm есть функционал, для удобного запуска контейнеров описанных в docker-compose.yml файлах. Для этого нужно добавить конфигурацию Запуска/Отладки: в главном меню нажимаем: Run -> Edit Configurations... в открывшемся окне, вверху слева жмём на + и выбираем Docker -> Docker-compose. Даём название конфигурации, убеждаемся что PHPStorm нашёл запущенный на компьютере Docker и отобразил его в графе Server. Теперь в графе Compose file(s) жмём на пиктограмму папки, затем на + и выбираем файл docker-compose.yml. Теперь при запуске добавленной конфигурации создадутся все необходимые образы, а из них контейнеры, а после их запуска, всё необходимое окружение будет готово.

Внедрение в проект

Скопировать в корень проекта папку docker, со всем содержимым и файл docker-compose.yml.

Следует проверить сервисы описанные в docker-compose.yml и удалить не нужные

Подключение к базе данных

Создайте в папке пользователя файл .my.cnf

$ touch ~/.my.cnf

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

[client]
host=127.0.0.1
port=$MYSQL_PORT
user=root
password=$MYSQL_ROOT_PASSWORD

теперь можете подключиться к БД из консоли

$ sudo apt-get install mysql-client
$ mysql

Восстановление из дампа

Устанавливаем необходимые пакеты

$ sudo apt-get install wget unzip

затем скачиваем файл дампа по предоставленной ссылке, распаковываем, заливаем в БД и удаляем

$ wget $MYSQL_DUMP_URL -O /tmp/dump.zip
$ unzip -p /tmp/dump.zip | mysql --database=$MYSQL_DATABASE
$ rm /tmp/dump.zip

Планы на будущее

  • добавить в контейнер application
    • поддержку node.js
    • поддержку crontab
  • изолировать контейнер php-cli
  • добавить в php-fpm
    • AMQP, rabbitmq
    • memcached
  • to be continue...

THANKS

Changelog

Please see CHANGELOG for more information what has changed recently.

About

Docker starter kit for Laravel based app

Resources

License

Stars

Watchers

Forks

Packages

No packages published