LaraDoc - Laravel проект в Docker контейнерах
LaraDoc - это проект на GitHub с предустановленными настройками для запуска проекта в Docker контейнерах. Контейнеры основаны на одноименном Docker образе laradoc.
Зависимости:
- Laravel - собственно, сам проект
- Docker Toolbox - утилита упрощает работу с docker
- Git - куда сейчас без git'а
- Composer - ну и ставший уже дефакто менеджер пакетов для PHP
Инициализация
Создайте Laravel проект (или используйте существующий):
composer create-project laravel/laravel --prefer-dist YOUR_APP_DIR_NAMEСоздайте каталог docker в корне проекта, перейдите в него и склонируйте проект laradoc в этот каталог. Это займет считанные секунды.
cd YOUR_APP_DIR_NAME/
mkdir docker && cd $_
git clone https://github.com/LaraDock/laradock.git .
Создайте virtualhost для этого проекта:
sudo gedit /etc/hosts127.0.0.1 laradock.lclПропишите домен laradock.lcl для параметров DB_HOST, REDIS_HOST в файле .env:
DB_HOST=laradoc.lcl
REDIS_HOST=laradoc.lclУстановите Docker Compose:
sudo apt-get -y install python-pip
sudo pip install docker-compose
Внимание!
При ошибке во время установки docker-compose:
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 47: ordinal not in range(128)Установите python-dev:
sudo apt-get install python-devЕсли у вас установлены Apache/Nginx, MySQL, Redis - сразу рекомендую сменить порты контейнера в файле docker/docker-compose.yml:
# PHP + NGINX Container #----------------------------------
php-nginx:
ports:
- "8033:80"
# MySQL Container #----------------------------------------
mysql:
ports:
- "3333:3306"
# Redis Container #----------------------------------------
redis:
ports:
- "6679:6379
И запустите инициализацию контейнеров (в каталоге YOUR_APP_DIR_NAME/docker/). При первом запуске docker-compose будет скачивать необходимые образы, поэтому выполнение может занять несколько минут. Поледующий запуск контейнеров займет считанные секунды.
docker-compose up -dВнимание!
При ошибке "ERROR: Cannot link to a non running container: /mysql AS /php-nginx/mysql" попытайтесь запустить контейнер mysql и посмотреть почему не стартует контейнер:
docker-compose up mysqlУ меня ошибка: "mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: Permission denied". Которая проявляется в том случае, когда на локалке уже установлена БД MySQL.
Следующие рекомендации по установке библиотек проблему не решили:
sudo apt-get install libaio1 libaio-dev python-pyodbc Для решения проблемы есть небезопасное решение, которое годится только для dev окружения!
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqldВаше приложение будет доступно по адресу http://laradoc.lcl:8033/.
Примечание
После перезагрузки системы нужно будет заново запустить контейнеры.
Полезные команды:
docker ps # список запущенных контейнеров
docker-compose stop # остановить запущенные контейнеры
docker-compose rm -f # удалить все контейнеры
Источник: http://laradock.github.io/laradock/
#laradoc laravel & docker, #docker-compose