LaraDoc - Laravel проект в Docker контейнерах

Категория: Laravel

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_HOSTREDIS_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

категория: Laravel