Laradock позволяет быстро создать среду для работы с Laravel с помощью Docker.
Похоже на Laravel Homestead, но вместо Vagrant используется Docker.
Сначала используйте Laradock, а затем изучайте его.## Оглавление
Laradock стремится упростить процесс создания среды для разработки. Он включает предварительно упакованные образы Docker, предоставляющие вам удобную среду разработки без необходимости установки PHP, NGINX, MySQL и других программ на вашем локальном компьютере.
Давайте рассмотрим установку NGINX, PHP, Composer, MySQL и Redis, а затем запустим Laravel.
git clone https://github.com/laradock/laradock.git
cp .env.example .env
Если вы находитесь в Китае, можно скорректировать некоторые конфигурации для ускорения процесса зеркалирования, однако при сборке будут использоваться GitHub для загрузки некоторых файлов, поэтому убедитесь, что ваш компьютер может подключаться к GitHub
(1) Настройте ускорение загрузки с помощью DockerHub, ссылка
(2) Измените .env
# Включение внутреннего источника Ubuntu
CHANGE_SOURCE=true
# Исходник composer
WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/
# Исходник nvm
WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
# Исходник npm
WORKSPACE_NPM_REGISTRY=https://registry.npmmirror.com
docker-compose up -d nginx mysql redis
Откройте файл .env вашего проекта Laravel и установите DB_HOST для mysql и REDIS_HOST для redis.
Dockerfile
.Trusted base images
).Dockerfile
).docker-compose
).Очень серьёзно!
Vagrant требует нескольких минут для создания виртуальной машины, тогда как Docker создаёт виртуальные контейнеры за считанные секунды. Вместо полной виртуальной машины, такой как используется в Vagrant, Docker предлагает лёгкие виртуальные контейнеры, использующие одно и то же ядро и позволяющие безопасно выполнять независимые процессы.
Кроме скорости, Docker обеспечивает множество функций, недоступных в Vagrant.
Основное преимущество Docker заключается в том, что он может работать как на этапе разработки, так и на этапе производства (в одном и том же окружении). Vagrant предназначен для разработки (поэтому вам придётся заново строить сервер каждый раз на этапе производства).
Laradock и Homestead предоставляют вам полное виртуальное окружение для разработки (не требуется установка и настройка программного обеспечения на каждом вашем компьютере).
Homestead представляет собой инструмент управления виртуальными машинами (с использованием специальных команд Homestead). Vagrant управляет вашими виртуальными контейнерами.
Запуск виртуального контейнера намного быстрее, чем запуск целой виртуальной машины. Laradock работает намного быстрее Homestead
Что лучше, чем демонстрационные видео:
1 - Клонировать репозиторий Laradock
:
A) Если у вас уже есть проект Laravel, клонируйте этот репозиторий в корневую директорию вашего проекта:
git submodule add https://github.com/laradock/laradock.git
Если вы не используете Git для управления проектом Laravel, вы можете использовать
git clone
вместоgit submodule
.
B) Если у вас нет проекта Laravel, а вы хотите установить Laravel с помощью Docker, клонируйте этот репозиторий в любом месте вашей машины:
git clone https://github.com/laradock/laradock.git
Пожалуйста, прочтите перед началом: Если вы используете Docker Toolbox (виртуальная машина), выберите один из следующих методов:
Laradock-ToolBox
ветка).Если вы используете Docker Desktop (версия для Mac/Windows или Linux), обычно можно продолжать читать эту документацию, так как версии Laradock v4 и выше поддерживают только Docker Desktop.1 - Запустите контейнеры: (перед запуском команды docker-compose
, убедитесь, что вы находитесь в директории laradock
)
Пример: Запустите NGINX и MySQL:
docker-compose up -d nginx mysql
Вы можете выбрать свою собственную комбинацию контейнеров из следующего списка:
nginx
, hhvm
, php-fpm
, mysql
, redis
, postgres
, mariadb
, neo4j
, mongo
, apache2
, caddy
, memcached
, beanstalkd
, beanstalkd-console
, workspace
.
Замечание: Контейнеры workspace
и php-fpm
будут запущены автоматически во многих случаях, поэтому их не обязательно указывать в команде up
.
2 - Войдите в контейнер Workspace и выполните команды, такие как Artisan, Composer, PHPUnit, Gulp и т.д.
docker-compose exec workspace bash
Добавьте --user=laradock
(например, docker-compose exec --user=laradock workspace bash
) для создания файлов под вашим пользователем хоста. Вы можете изменить значения PUID (User id) и PGID (Group id) в файле docker-compose.yml
.
3 - Измените конфигурацию Laravel.
Если вы ещё не установили проект Laravel, обратитесь к разделу Как установить Laravel в контейнере Docker.
Откройте файл .env
вашего проекта Laravel и настройте значение DB_HOST
для mysql
:
DB_HOST=mysql
4 - Откройте браузер и перейдите по адресу localhost (http://localhost/
).
Дебаггинг: Если вы столкнулись с какой-либо проблемой, просмотрите раздел Дебаггинг. Если вам требуется специальная поддержка, свяжитесь со мной, подробнее в разделе Помощь и проблемы.
docker ps
Вы также можете использовать следующую команду для просмотра контейнеров проекта:
docker-compose ps
docker-compose stop
Остановка конкретного контейнера:
docker-compose stop {имя_контейнера}
docker-compose down
Обратите внимание, что эта команда также удалит ваши данные контейнеров. (Если вы хотите сохранить свои данные, вам следует указать имя каждого контейнера после выполнения вышеупомянутой команды для удаления каждого контейнера отдельно):
1 - Сначала используйте команду docker ps
, чтобы просмотреть все запущенные контейнеры
2 - Для входа в какой-либо контейнер используйте:
docker-compose exec {имя_контейнера} bash
Например: Вход в контейнер MySQL
docker-compose exec mysql bash
3 - Выход из контейнера, введите exit
.
Откройте файл docker-compose.yml
и сделайте необходимые изменения.
Например:
Изменение имени базы данных MySQL:
environment:
MYSQL_DATABASE: laradock
Изменение порта Redis по умолчанию на 1111:
ports:
- "1111:6379"
```<a name="Edit-a-Docker-Image"></a>
### Изменение Docker образа
1. Найдите файл `Dockerfile` для того образа, который вы хотите изменить,
<br>например: `mysql` находится в папке `mysql/Dockerfile`.
2. Измените файл так, как вам требуется.
3. Перестроение контейнера:
```bash
docker-compose build mysql
Дополнительная информация о перестроении контейнеров доступна здесь.
При любом изменении файла Dockerfile
убедитесь, что вы выполнили эту команду, чтобы применить все изменения:
docker-compose build
Вы можете выбрать конкретный контейнер для перестроения (вместо перестроения всех контейнеров):
docker-compose build {имя_контейнера}
Если вы хотите полностью перестроить контейнер, возможно, вам потребуется использовать опцию --no-cache
(docker-compose build --no-cache {имя_контейнера}
).
Чтобы добавить новый образ (программное обеспечение), отредактируйте файл docker-compose.yml
и добавьте детали контейнера, вам потребуется знание синтаксиса docker compose файла.
Логи Nginx находятся в директории logs/nginx
.
Затем просмотрите логи других контейнеров (MySQL, PHP-FPM и т.д.). Вы можете запустить:```bash docker logs {имя_контейнера}
<a name="Laravel"></a>
### [Laravel]
<a name="Install-Laravel"></a>
### Установка Laravel с помощью Docker образа
1 - В первую очередь вам следует войти в контейнер Workspace.
2 - Установите Laravel.
Например, используя Composer:
```bash
composer create-project laravel/laravel my-cool-app "5.2.*"
Мы рекомендуем использовать
composer create-project
, чтобы установить Laravel вместо Laravel Installer.
Дополнительная информация по установке Laravel доступна здесь.
3 - Измените docker-compose.yml
, чтобы отображался новый каталог приложения:
По умолчанию Laradock предполагает, что Laravel приложение находится в родительском каталоге относительно laradock.
Обновите Laravel приложение в каталоге my-cool-app
. Нужно заменить ../:/var/www
на ../my-cool-app/:/var/www
, как показано ниже:
application:
build: ./application
volumes:
- ../my-cool-app/:/var/www
4 - Перейдите в каталог и продолжайте работу...
cd my-cool-app
5 - Вернитесь к шагам установки Laradock и узнайте, как редактировать файл .env
.
Вы можете выполнять команды Artisan и другие команды терминала из контейнера Workspace.
1 - Подтвердите, что контейнер Workspace запущен.
docker-compose up -d workspace // ...и все остальные ваши контейнеры
2 - Определите имя контейнера Workspace:
docker-compose ps
3 - Войдите в контейнер Workspace:
docker-compose exec workspace bash
```Добавьте `--user=laradock` (например, `docker-compose exec --user=laradock workspace bash`) для создания файлов под вашим пользователем хоста.
4 - Выполните любую команду, которую вы хотите!
```bash
php artisan
composer update
phpunit
1 - В первую очередь убедитесь, что контейнер Redis запущен командой docker-compose up
.
docker-compose up -d redis
2 - Откройте файл конфигурации .env
вашего проекта Laravel и настройте значение REDIS_HOST
для Redis.
REDIS_HOST=redis
Если переменной REDIS_HOST
нет в вашем файле .env
, откройте файл конфигурации базы данных config/database.php
и замените дефолтный IP адрес 127.0.0.1
на redis
, как показано ниже:
'redis' => [
'cluster' => false,
'default' => [
'host' => 'redis',
'port' => 6379,
'database' => 0,
],
],
3 - Включите кэширование Redis или активируйте управление сессиями, заменив значение CACHE_DRIVER
и SESSION_DRIVER
в файле .env
с file
на redis
.
CACHE_DRIVER=redis
SESSION_DRIVER=redis
4 - Установите пакет predis/predis
через Composer (~1.0)
:
composer require predis/predis:^1.0
5 - Вы можете использовать следующий код для тестирования Redis в Laravel:
\Cache::store('redis')->put('Laradock', 'Awesome', 10);
1 - Сначала установите mongo
в контейнерах Workspace и PHP-FPM:
а) Откройте файл `docker-compose.yml`.
б) Найдите опцию `INSTALL_MONGO` в контейнере Workspace.
в) Установите её значение как `true`.
г) Найдите опцию `INSTALL_MONGO` в контейнере PHP-FPM.
д) Установите её значение как `true`.Соответствующие конфигурационные строки выглядят так:
workspace:
build:
context: ./workspace
args:
- INSTALL_MONGO=true
...
php-fpm:
build:
context: ./php-fpm
args:
- INSTALL_MONGO=true
...
2 - Перестроить контейнеры Workspace и PHP-FPM.
docker-compose build workspace php-fpm
3 - Запустите контейнер MongoDB (mongo
) командой docker-compose up
.
docker-compose up -d mongo
4 - Добавьте конфигурацию MongoDB в файл config/database.php
.
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE', 'database'),
'username' => '',
'password' => '',
'options' => [
'database' => '',
]
],
// ...
],
5 - Откройте файл .env
проекта Laravel и обновите следующие поля:
DB_HOST
как IP-адрес хоста mongo
.DB_PORT
как 27017
.DB_DATABASE
как database
.6 - Установите пакет jenssegers/mongodb
через Composer и добавьте сервис-провайдер Laravel.
composer require jenssegers/mongodb
Дополнительные детали доступны здесь.
7 - Тестирование:
php artisan migrate
.FPM
или CLI
, поскольку они устанавливаются в разных контейнерах. Если вам нужны оба, то потребуется редактирование обоих контейнеров.Расширение PHP-FPM должно быть установлено в контейнер php-fpm/Dockerfile-XX
. (Замените XX номером версии PHP).Расширение PHP-CLI должно быть установлено в контейнер workspace/Dockerfile
.
По умолчанию используется версия PHP-FPM 7.0.
PHP-FPM обслуживает ваш код приложения, поэтому если вы планируете запуск вашего приложения на различных версиях PHP-FPM, нет необходимости менять версию PHP-CLI.
7.0
на PHP 5.6
1 - Откройте файл docker-compose.yml
.
2 - В файле Dockerfile-70
контейнера PHP.
3 - Измените номер версии, заменив Dockerfile-70
на Dockerfile-56
, например:
php-fpm:
build:
context: ./php-fpm
dockerfile: Dockerfile-56
4 - Наконец, перестроите контейнер PHP
docker-compose build php
Для получения дополнительной информации о базовых образах PHP, посетите официальные образы PHP Docker.
7.0
или 5.6
на PHP 5.5
Мы больше не поддерживаем PHP 5.5 локально, но вы можете получить его следуя этим шагам:
1 - Клонируйте https://github.com/laradock/php-fpm
.
2 - Переименуйте файл Dockerfile-56
в Dockerfile-55
.
3 - Измените строку FROM php:5.6-fpm
на FROM php:5.5-fpm
.
4 - Создайте образ из файла Dockerfile-55
.
5 - Откройте файл docker-compose.yml
.
6 - Укажите php-fpm
на ваш файл Dockerfile-55
.
По умолчанию используется версия PHP-CLI 7.0> Примечание: PHP-CLI используется только для выполнения команд Artisan и Composer, а не для обслуживания вашего кода приложения; эта задача выполняется PHP-FPM. Поэтому изменение версии PHP-CLI не является важным. PHP-CLI установлен в контейнере Workspace, чтобы изменить версию PHP-CLI вам нужно редактировать файл workspace/Dockerfile
. Теперь вам придётся вручную изменить файл Dockerfile
для PHP-FPM или создать новый. (Вы можете рассмотреть возможность внесения этого изменения как вклад).
1 - Установите xDebug
в контейнеры Workspace и PHP-FPM:
а) Откройте файл `docker-compose.yml`
б) В контейнере Workspace найдите опцию `INSTALL_XDEBUG`
в) Установите её значение в `true`
г) В контейнере PHP-FPM найдите опцию `INSTALL_XDEBUG`
д) Установите её значение в `true`
Пример:
workspace:
build:
context: ./workspace
args:
- INSTALL_XDEBUG=true
...
php-fpm:
build:
context: ./php-fm
args:
- INSTALL_XDEBUG=true
...
2 - Перестроить контейнеры docker-compose build workspace php-fpm
Предположим, что ваш пользовательский домен — это laravel.test
.
1 - Откройте файл /etc/hosts
, добавьте следующее содержимое, чтобы отображать локальный хост 127.0.0.1
как домен laravel.test
.
127.0.0.1 laravel.test
2 - Откройте свой браузер и перейдите по адресу {http://laravel.test}
Вы можете настроить имя сервера в конфигурационном файле nginx, как показано ниже:
server_name laravel.test;
Для активации глобальной установки зависимостей Composer во время сборки контейнера, вам потребуется установить COMPOSER_GLOBAL_INSTALL
в true
.
docker-compose.yml
COMPOSER_GLOBAL_INSTALL
и установите её значение в true
Пример:
workspace:
build:
context: ./workspace
args:
- COMPOSER_GLOBAL_INSTALL=true
...
workspace/composer.json
docker-compose build workspace
Prestissimo — это плагин Composer с возможностью параллельной установки.
Во время установки активируйте глобальную установку Composer:
Нажмите эту ссылку для активации глобальной установки Composer и продолжайте шаги Yöntem 1 и 2.
Добавьте зависимость Prestissimo в Composer:
а. Откройте файл workspace/composer.json
б. Добавьте зависимость "hirak/prestissimo": "^0.3"
в. Перестроить контейнер Workspace docker-compose build workspace
Установка NVM и Node.js в контейнер Workspace
docker-compose.yml
.INSTALL_NODE
и установите её значение в true
. Пример:```yaml
рабочее пространство:
сборка:
контекст: ./рабочее_пространство
аргументы:
- INSTALL_NODE=true
...
3. Перестроение контейнера командой `docker-compose build рабочее_пространство`.
<a name="debugging"></a>
### Отладка
Список часто встречающихся проблем и возможных решений.
#### Вы видите пустую страницу вместо приветственной страницы Laravel!
Выполните следующие команды в корневой директории проекта Laravel:
```bash
sudo chmod -R 777 storage bootstrap/cache
Используйте адрес http://127.0.0.1
вместо http://localhost
в браузере.
Убедитесь, что порты сервера (например, 80, 3306 и так далее) не используются другими программами, такими как службы Apache/httpd или другие установленные средства разработки.
Переход от Docker Toolbox (VirtualBox) к Docker Native (для Mac/Windows) требует обновления Laradock с версий v3.* до v4.*:
docker-machine stop {default}
.v4.*.*
командой git pull origin master
.docker-compose up -d nginx mysql
.Примечание: Если вы столкнулись с одной из вышеупомянутых проблем, рекомендуется перестроить все ваши контейнеры командой docker-compose build --no-cache
. Будьте внимательны: данные внутри контейнеров могут быть потеряны!
Этот небольшой проект был создан одним человеком, который имеет полный рабочий день и множество обязанностей, поэтому если вам понравился этот проект и вы заметили необходимость исправления ошибок, поддержки новых программного обеспечения или обновлений контейнеров, вы очень приветствуетесь для участия!
Получите поддержку и помощь через чат Gitter сообщества.
Вы также можете создать issue на GitHub (он будет помечен как вопрос и ответ) или обсудить его с сообществом Gitter. Пособие по Docker или Laravel доступно непосредственно через онлайн-общение с основателем проекта на Codementor.io
Основатель:
Отличники:
Лицензия MIT (MIT)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )