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/hosts
127.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