1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/anviod-laradock

Клонировать/Скачать
README-zh.md 39 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 00:46 2921e1a

Laradock

forthebadge

Gitter

Laradock позволяет быстро создать среду для работы с Laravel с помощью Docker.

Похоже на Laravel Homestead, но вместо Vagrant используется Docker.

Сначала используйте Laradock, а затем изучайте его.## Оглавление

Введение

Laradock стремится упростить процесс создания среды для разработки. Он включает предварительно упакованные образы Docker, предоставляющие вам удобную среду разработки без необходимости установки PHP, NGINX, MySQL и других программ на вашем локальном компьютере.

Краткое руководство:

Давайте рассмотрим установку NGINX, PHP, Composer, MySQL и Redis, а затем запустим Laravel.

  1. Разместите Laradock в вашем проекте Laravel:
git clone https://github.com/laradock/laradock.git
  1. Войдите в каталог Laradock:
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
  1. Запустите эти контейнеры:
docker-compose up -d nginx mysql redis
  1. Откройте файл .env вашего проекта Laravel и установите DB_HOST для mysql и REDIS_HOST для redis.

  2. Откройте браузер и перейдите на localhost:

Основные характеристики

  • Легкая смена версий PHP: 7.0, 5.6, 5.5...
  • Возможность выбора любимого движка баз данных, например: MySQL, Postgres, MariaDB...
  • Возможность запуска своего набора программ, таких как: Memcached, HHVM, Beanstalkd...
  • Все программы работают в отдельных контейнерах, например: PHP-FPM, NGINX, PHP-CLI...
  • Простая настройка любого контейнера путём создания файла Dockerfile.
  • Все образы основаны на официальных доверенных базовых образах (Trusted base images).
  • Предварительно настроенный Nginx-окружение для Laravel.
  • Легкая настройка конфигурационных файлов контейнеров (Dockerfile).
  • Последняя версия Docker Compose (docker-compose).
  • Все элементы являются визуализируемыми и редактируемыми.
  • Быстрое создание образов.
  • Обновление каждую неделю...

Поддерживаемые программы (контейнеры)

  • Движки баз данных:
    • MySQL
    • PostgreSQL
    • MariaDB
    • MongoDB
    • Neo4j
  • Кэширование:
    • Redis
    • Memcached
  • Серверы PHP:
    • NGINX
    • Apache2
    • Caddy
  • Инструменты компиляции PHP:
    • PHP-FPM
    • HHVM
  • Системы очередей сообщений:
    • Beanstalkd (+ Beanstalkd Console)
  • Инструменты:
    • Workspace (PHP7-CLI, Composer, Git, Node, Gulp, SQLite, Vim, Nano, cURL...)>Если вы не можете найти нужное вам программное обеспечение, создайте его и добавьте в этот список. Ваши вклады приветствуются.

Что такое Docker?Docker — это открытый проект, автоматизирующий развертывание контейнеров с приложениями. Он предоставляет дополнительный уровень абстракции и автоматизацию операционной системы уровня виртуализации на платформах Linux, macOS и Windows.

Что такое Laravel?

Очень серьёзно!

Почему использовать Docker вместо Vagrant?

Vagrant требует нескольких минут для создания виртуальной машины, тогда как Docker создаёт виртуальные контейнеры за считанные секунды. Вместо полной виртуальной машины, такой как используется в Vagrant, Docker предлагает лёгкие виртуальные контейнеры, использующие одно и то же ядро и позволяющие безопасно выполнять независимые процессы.

Кроме скорости, Docker обеспечивает множество функций, недоступных в Vagrant.

Основное преимущество Docker заключается в том, что он может работать как на этапе разработки, так и на этапе производства (в одном и том же окружении). Vagrant предназначен для разработки (поэтому вам придётся заново строить сервер каждый раз на этапе производства).

Сравнение Laradock и Homestead

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 (виртуальная машина), выберите один из следующих методов:

  • Обновитесь до Docker Desktop версии для Mac/Windows (рекомендовано). Смотрите раздел Обновление Laradock
  • Используйте версию Laradock v3.* (перейдите к ветке 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]

Список текущих запущенных контейнеров

docker ps

Вы также можете использовать следующую команду для просмотра контейнеров проекта:

docker-compose ps

Остановка всех контейнеров

docker-compose stop

Остановка конкретного контейнера:

docker-compose stop {имя_контейнера}

Удаление всех контейнеров

docker-compose down

Обратите внимание, что эта команда также удалит ваши данные контейнеров. (Если вы хотите сохранить свои данные, вам следует указать имя каждого контейнера после выполнения вышеупомянутой команды для удаления каждого контейнера отдельно):

Вход в контейнер (SSH вход в запущенный контейнер)

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 образов)

Чтобы добавить новый образ (программное обеспечение), отредактируйте файл 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

Вы можете выполнять команды 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

Использование Redis

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);

Использование Mongo

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 - Тестирование:

  • Сначала сделайте так, чтобы ваша модель наследовалась от модели Eloquent MongoDB. Ознакомьтесь с документацией.
  • Войдите в контейнер Workspace.
  • Примените миграцию базы данных php artisan migrate.

[PHP]

Установка расширений PHPПеред установкой расширений PHP вам следует решить, нужен ли вам FPM или CLI, поскольку они устанавливаются в разных контейнерах. Если вам нужны оба, то потребуется редактирование обоих контейнеров.Расширение PHP-FPM должно быть установлено в контейнер php-fpm/Dockerfile-XX. (Замените XX номером версии PHP).

Расширение PHP-CLI должно быть установлено в контейнер workspace/Dockerfile.

Изменение версии PHP-FPM

По умолчанию используется версия PHP-FPM 7.0.

PHP-FPM обслуживает ваш код приложения, поэтому если вы планируете запуск вашего приложения на различных версиях PHP-FPM, нет необходимости менять версию PHP-CLI.

А) Переключение версий PHP 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.

Б) Переключение версий PHP 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

По умолчанию используется версия PHP-CLI 7.0> Примечание: PHP-CLI используется только для выполнения команд Artisan и Composer, а не для обслуживания вашего кода приложения; эта задача выполняется PHP-FPM. Поэтому изменение версии PHP-CLI не является важным. PHP-CLI установлен в контейнере Workspace, чтобы изменить версию PHP-CLI вам нужно редактировать файл workspace/Dockerfile. Теперь вам придётся вручную изменить файл Dockerfile для PHP-FPM или создать новый. (Вы можете рассмотреть возможность внесения этого изменения как вклад).

Установка xDebug

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

Разное

Использование пользовательского домена (заменяет IP адрес Docker)

Предположим, что ваш пользовательский домен — это 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 во время сборки контейнера, вам потребуется установить COMPOSER_GLOBAL_INSTALL в true.

  1. Откройте файл docker-compose.yml
  2. В контейнере Workspace найдите опцию COMPOSER_GLOBAL_INSTALL и установите её значение в true

Пример:

    workspace:
        build:
            context: ./workspace
            args:
                - COMPOSER_GLOBAL_INSTALL=true
    ...
  1. Теперь добавьте ваши зависимости в workspace/composer.json
  2. Перестроить контейнер Workspace docker-compose build workspace

Установка Prestissimo

Prestissimo — это плагин Composer с возможностью параллельной установки.

  1. Во время установки активируйте глобальную установку Composer:

    Нажмите эту ссылку для активации глобальной установки Composer и продолжайте шаги Yöntem 1 и 2.

  2. Добавьте зависимость Prestissimo в Composer:

а. Откройте файл workspace/composer.json

б. Добавьте зависимость "hirak/prestissimo": "^0.3"

в. Перестроить контейнер Workspace docker-compose build workspace

Установка Node + NVM

Установка NVM и Node.js в контейнер Workspace

  1. Откройте файл docker-compose.yml.
  2. В разделе контейнера Workspace найдите опцию 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

Вы видите сообщение "Добро пожаловать в Nginx", а не приложение Laravel!

Используйте адрес http://127.0.0.1 вместо http://localhost в браузере.

Вы видите ошибку с текстом "адрес уже используется"

Убедитесь, что порты сервера (например, 80, 3306 и так далее) не используются другими программами, такими как службы Apache/httpd или другие установленные средства разработки.

Обновление Laradock

Переход от Docker Toolbox (VirtualBox) к Docker Native (для Mac/Windows) требует обновления Laradock с версий v3.* до v4.*:

  1. Остановите Docker виртуальную машину командой docker-machine stop {default}.
  2. Установите Docker для Mac или Windows.
  3. Обновите Laradock до версии v4.*.* командой git pull origin master.
  4. Используйте Laradock аналогично предыдущим версиям: docker-compose up -d nginx mysql.

Примечание: Если вы столкнулись с одной из вышеупомянутых проблем, рекомендуется перестроить все ваши контейнеры командой docker-compose build --no-cache. Будьте внимательны: данные внутри контейнеров могут быть потеряны!

Вклад

Этот небольшой проект был создан одним человеком, который имеет полный рабочий день и множество обязанностей, поэтому если вам понравился этот проект и вы заметили необходимость исправления ошибок, поддержки новых программного обеспечения или обновлений контейнеров, вы очень приветствуетесь для участия!

Прочитайте наши инструкции по вкладу.

Поддержка и помощь

Получите поддержку и помощь через чат Gitter сообщества.

Вы также можете создать issue на GitHub (он будет помечен как вопрос и ответ) или обсудить его с сообществом Gitter. Пособие по Docker или Laravel доступно непосредственно через онлайн-общение с основателем проекта на Codementor.io

О создателе

Основатель:

Отличники:

Лицензия

Лицензия MIT (MIT)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/anviod-laradock.git
git@api.gitlife.ru:oschina-mirror/anviod-laradock.git
oschina-mirror
anviod-laradock
anviod-laradock
master