Docker Starter Kit - стартовое окружение php-разработчика основанное на docker.
Папки без указания версий - текущая актуальная версия для ведения разработки. Если она устарела, или нужна специфическая версия - заводим отдельную папку для образа, с указанием версии. Например понадобился php-fpm версии 8.0, а текущий 7.4. Создаём рядом папку php-fpm-8.0 разворачиваем конкретный образ в нём.
/app- каталог с приложением, либо подпапки/data- каталог с данными от БД, эластика и т.п./docker- каталог с файлами настройки образов/scripts- каталог с вспомогательными скриптами.env.example- пример файла переменных окруженияdocker-compose.yml- основной файл сборки контейнеров
Просто копируем заготовку в .env файл.
$ cp ./.env.example ./.env В .env указываем необходимые переменные окружения.
Перед началом использования 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 желательно поправить следующие параметры ядра /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 to be continue...
Необходимо добавить доменные имена в файл 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.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 есть функционал, для удобного запуска контейнеров описанных в 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...
Please see CHANGELOG for more information what has changed recently.