Перейти к содержимому
Главная страница » Как установить и настроить Laravel с помощью Docker Compose в Ubuntu 22.04

Как установить и настроить Laravel с помощью Docker Compose в Ubuntu 22.04

Убунту 22.04

Введение

Контейнеризация приложения — это процесс адаптации приложения и его компонентов для возможности запуска его в облегченных средах, известных как контейнеры. Такие среды изолированы и одноразовые, и их можно использовать для разработки, тестирования и развертывания приложений в рабочей среде.

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

  • Служба app , работающая под управлением PHP7.4-FPM;
  • Служба db , работающая под управлением MySQL 5.7;
  • Служба nginx , которая использует службу app для анализа PHP-кода перед передачей приложения Laravel конечному пользователю.

Чтобы упростить процесс разработки и облегчить отладку приложений, мы будем синхронизировать файлы приложения, используя общие тома. Мы также увидим, как использовать команды docker-compose exec для запуска Composer и Artisan в контейнере app .

Развертывайте свои интерфейсные приложения из GitHub с помощью платформы приложений DigitalOcean. Позвольте DigitalOcean сосредоточиться на масштабировании вашего приложения.

Предварительные условия

  • Доступ к локальному компьютеру Ubuntu 22.04 или серверу разработки от имени пользователя без полномочий root с привилегиями sudo. Если вы используете удаленный сервер, желательно установить активный брандмауэр. Чтобы настроить их, обратитесь к нашему Руководству по первоначальной настройке сервера для Ubuntu 22.04.
  • Docker установлен на вашем сервере, следуя шагам 1 и 2 статьи «Как установить и использовать Docker в Ubuntu 22.04».
  • Docker Compose установлен на вашем сервере, следуя шагу 1 инструкции по установке и использованию Docker Compose в Ubuntu 22.04.

Шаг 1 — Получение демо-приложения

Для начала мы получим демо-приложение Laravel из репозитория Github. Нас интересует ветка tutorial-01 , которая содержит базовое приложение Laravel, созданное нами в первом руководстве этой серии.

Чтобы получить код приложения, совместимый с этим руководством, загрузите версию tutorial-1.0.1 в свой домашний каталог с помощью:

  1. компакт-диск ~
  2. завиток -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-1.0.1.zip -o travellist.zip

Для распаковки кода приложения нам понадобится команда unzip . Если вы еще не установили этот пакет раньше, сделайте это сейчас с помощью:

  1. обновление sudo apt
  2. sudo apt установить разархивировать

Теперь разархивируйте содержимое приложения и переименуйте распакованный каталог для облегчения доступа:

  1. разархивируйте файл travellist.zip
  2. mv travellist-laravel-demo-tutorial-1.0.1 Travellist-демо

Перейдите в каталог travellist-demo :

  1. компакт-диск Travellist-демо

На следующем шаге мы создадим файл конфигурации .env для настройки приложения.

Шаг 2. Настройка файла .env приложения.

Файлы конфигурации Laravel расположены в каталоге config внутри корневого каталога приложения. Кроме того, файл .env используется для настройки конфигурации, зависящей от среды, например учетных данных и любой информации, которая может различаться в зависимости от развертывания. Этот файл не включен в контроль версий.

Warning . Файл конфигурации среды содержит конфиденциальную информацию о вашем сервере, включая учетные данные базы данных и ключи безопасности. По этой причине вам никогда не следует публиковать этот файл публично.

Значения, содержащиеся в файле .env будут иметь приоритет над значениями, установленными в обычных файлах конфигурации, расположенных в каталоге config . Для каждой установки в новой среде требуется специальный файл среды, в котором определяются такие параметры, как параметры подключения к базе данных, параметры отладки, URL-адрес приложения, а также другие элементы, которые могут различаться в зависимости от среды, в которой работает приложение.

Теперь мы создадим новый файл .env для настройки параметров конфигурации среды разработки, которую мы настраиваем. Laravel поставляется с примером файла .env , который мы можем скопировать, чтобы создать свой собственный:

  1. cp .env.example .env

Откройте этот файл с помощью nano или текстового редактора по вашему выбору:

  1. нано .env

Текущий файл .env из демонстрационного приложения travellist содержит настройки для использования локальной базы данных MySQL с 127.0.0.1 в качестве хоста базы данных. Нам нужно обновить переменную DB_HOST , чтобы она указывала на службу базы данных, которую мы создадим в нашей среде Docker. В этом руководстве мы будем называть нашу службу базы данных db . Идем дальше и заменяем указанное значение DB_HOST именем службы базы данных:

.env
 APP_NAME=Travellist APP_ENV=dev APP_KEY= APP_DEBUG=true APP_URL=http://localhost:8000 LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST= db DB_PORT=3306 DB_DATABASE= список путешествий DB_USERNAME= travellist_user БД_ПАРОЛЬ= пароль ...

При желании вы также можете изменить имя базы данных, имя пользователя и пароль. Эти переменные будут использованы на следующем этапе, когда мы настроим файл docker-compose.yml для настройки наших сервисов.

Сохраните файл, когда закончите редактирование. Если вы использовали nano , вы можете сделать это, нажав Ctrl+x , затем Y и Enter для подтверждения.

Шаг 3 — Настройка Dockerfile приложения

Хотя наши службы MySQL и Nginx будут основаны на образах по умолчанию, полученных из Docker Hub, нам все равно необходимо создать собственный образ для контейнера приложения. Для этого мы создадим новый Dockerfile.

Наш образ travellist будет основан на официальном образе php:7.4-fpm из Docker Hub. Поверх этой базовой среды PHP-FPM мы установим несколько дополнительных модулей PHP и инструмент управления зависимостями Composer.

Мы также создадим нового системного пользователя; это необходимо для выполнения команд artisan и composer во время разработки приложения. Параметр uid гарантирует, что пользователь внутри контейнера будет иметь тот же uid, что и пользователь вашей системы на вашем хост-компьютере, где вы запускаете Docker. Таким образом, любые файлы, созданные этими командами, реплицируются на хосте с правильными разрешениями. Это также означает, что вы сможете использовать выбранный вами редактор кода на хост-компьютере для разработки приложения, работающего внутри контейнеров.

Создайте новый Dockerfile с помощью:

  1. нано Dockerfile

Скопируйте следующее содержимое в свой Dockerfile:

Докерфайл
 FROM php:7.4-fpm # Arguments defined in docker-compose.yml ARG user ARG uid # Install system dependencies RUN apt-get update && apt-get install -y  git  curl  libpng-dev  libonig-dev  libxml2-dev  zip  unzip # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd # Get latest Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # Create system user to run Composer and Artisan Commands RUN useradd -G www-data,root -u $uid -d /home/$user $user RUN mkdir -p /home/$user/.composer &&  chown -R $user:$user /home/$user # Set working directory WORKDIR /var/www USER $user

Не забудьте сохранить файл, когда закончите.

Наш Dockerfile начинается с определения используемого нами базового образа: php:7.4-fpm .

После установки системных пакетов и расширений PHP мы устанавливаем Composer, копируя исполняемый файл composer из его последнего официального образа в наш собственный образ приложения.

Затем создается и настраивается новый системный пользователь с использованием аргументов user и uid , которые были объявлены в начале Dockerfile. Эти значения будут введены Docker Compose во время сборки.

Наконец, мы устанавливаем рабочий каталог по умолчанию как /var/www и переходим к вновь созданному пользователю. Это позволит убедиться, что вы подключаетесь как обычный пользователь и находитесь в правильном каталоге при запуске команд composer и artisan в контейнере приложения.

Шаг 4 — Настройка файлов конфигурации Nginx и дампа базы данных

При создании сред разработки с помощью Docker Compose часто необходимо предоставить общий доступ к файлам конфигурации или инициализации сервисным контейнерам, чтобы настроить или загрузить эти сервисы. Этот метод облегчает внесение изменений в файлы конфигурации для точной настройки среды во время разработки приложения.

Теперь мы создадим папку с файлами, которые будут использоваться для настройки и инициализации наших сервисных контейнеров.

Чтобы настроить Nginx, мы предоставим файл travellist.conf , который будет настраивать способ обслуживания приложения. Создайте папку docker-compose/nginx с помощью:

  1. mkdir -p docker-compose/nginx

Откройте новый файл с именем travellist.conf в этом каталоге:

  1. nano docker-compose/nginx/travellist.conf

Скопируйте в этот файл следующую конфигурацию Nginx:

docker-compose/nginx/travellist.conf
 server { listen 80; index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/public; location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location / { try_files $uri $uri/ /index.php?$query_string; gzip_static on; } }

Этот файл настроит Nginx на прослушивание порта 80 и использование index.php в качестве индексной страницы по умолчанию. Он установит корень документа в /var/www/public , а затем настроит Nginx на использование службы app на порту 9000 для обработки файлов *.php .

Сохраните и закройте файл, когда закончите редактирование.

Чтобы настроить базу данных MySQL, мы предоставим дамп базы данных, который будет импортирован при инициализации контейнера. Это функция, предоставляемая образом MySQL 5.7, который мы будем использовать в этом контейнере.

Создайте новую папку для файлов инициализации MySQL внутри папки docker-compose :

  1. mkdir docker-compose/mysql

Откройте новый файл .sql :

  1. nano docker-compose/mysql/init_db.sql

Следующий дамп MySQL основан на базе данных, которую мы настроили в нашем руководстве по Laravel на LEMP. Будет создана новая таблица с именем places . Затем он заполнит таблицу набором образцов мест.

Добавьте в файл следующий код:

docker-compose/mysql/db_init.sql
 DROP TABLE IF EXISTS ` places ` ; CREATE TABLE ` places ` ( ` id ` bigint ( 20 ) unsigned NOT NULL AUTO_INCREMENT , ` name ` varchar ( 255 ) COLLATE utf8mb4_unicode_ci NOT NULL , ` visited ` tinyint ( 1 ) NOT NULL DEFAULT '0' , PRIMARY KEY ( ` id ` ) ) ENGINE = InnoDB AUTO_INCREMENT = 12 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ; INSERT INTO ` places ` ( name , visited ) VALUES ( 'Berlin' , 0 ) , ( 'Budapest' , 0 ) , ( 'Cincinnati' , 1 ) , ( 'Denver' , 0 ) , ( 'Helsinki' , 0 ) , ( 'Lisbon' , 0 ) , ( 'Moscow' , 1 ) , ( 'Nairobi' , 0 ) , ( 'Oslo' , 1 ) , ( 'Rio' , 0 ) , ( 'Tokyo' , 0 ) ;

Таблица places содержит три поля: id , name и visited . Поле visited — это флаг, используемый для обозначения мест, которые еще предстоит посетить. Не стесняйтесь менять места в примерах или включать новые. Сохраните и закройте файл, когда закончите.

Мы завершили настройку Dockerfile приложения и файлов конфигурации службы. Далее мы настроим Docker Compose для использования этих файлов при создании наших сервисов.

Шаг 5. Создание многоконтейнерной среды с помощью Docker Compose

Docker Compose позволяет создавать многоконтейнерные среды для приложений, работающих на Docker. Он использует определения сервисов для создания полностью настраиваемых сред с несколькими контейнерами, которые могут совместно использовать сети и объемы данных. Это обеспечивает плавную интеграцию между компонентами приложения.

Чтобы настроить определения наших сервисов, мы создадим новый файл с именем docker-compose.yml . Обычно этот файл находится в корне папки приложения и определяет вашу контейнерную среду, включая базовые образы, которые вы будете использовать для создания контейнеров, и способы взаимодействия ваших сервисов.

В нашем файле docker-compose.yml мы определим три разных сервиса: app , db и nginx .

Служба app создаст образ с именем travellist на основе ранее созданного файла Dockerfile. Контейнер, определенный этой службой, будет запускать сервер php-fpm для анализа PHP-кода и отправки результатов обратно в службу nginx , которая будет работать в отдельном контейнере. Служба mysql определяет контейнер, на котором работает сервер MySQL 5.7. Наши службы будут использовать мостовую сеть под названием travellist .

Файлы приложения будут синхронизироваться как в app , так и в службах nginx посредством bind mounts . Привязка монтирования полезна в средах разработки, поскольку обеспечивает эффективную двустороннюю синхронизацию между хост-компьютером и контейнерами.

Создайте новый файл docker-compose.yml в корне папки приложения:

  1. нано docker-compose.yml

Типичный файл docker-compose.yml начинается с определения версии, за которым следует узел services , в котором определены все службы. Общие сети обычно определяются в нижней части этого файла.

Для начала скопируйте этот шаблонный код в файл docker-compose.yml :

docker-compose.yml
 version: "3.7" services: networks: Travellist : водитель: мост

Теперь мы отредактируем узел services , включив в него службы app , db и nginx .

Служба app

Служба app настроит контейнер с именем travellist-app . Он создает новый образ Docker на основе файла Dockerfile, расположенного по тому же пути, что и файл docker-compose.yml . Новое изображение будет сохранено локально под именем travellist .

Несмотря на то, что корень документа, который используется в качестве приложения, расположен в контейнере nginx , нам также нужны файлы приложения где-то внутри контейнера app , чтобы мы могли выполнять задачи командной строки с помощью инструмента Laravel Artisan.

Скопируйте следующее определение службы в свой узел services внутри файла docker-compose.yml :

docker-compose.yml
 app: build: args: user: Сэмми идентификатор: 1000 контекст: ./ dockerfile: Изображение Dockerfile: список путешествий имя_контейнера: приложение Travellist перезапуск: если не остановлен рабочий_каталог: /var/www/ тома: - ./:/вар/www сети: - список путешествий

Эти настройки делают следующее:

  • build : эта конфигурация указывает Docker Compose создать локальный образ для службы app , используя указанный путь (контекст) и Dockerfile для инструкций. Аргументы user и uid вводятся в Dockerfile для настройки команд создания пользователей во время сборки.
  • image : имя, которое будет использоваться для создаваемого образа.
  • container_name : устанавливает имя контейнера для этой службы.
  • restart : Всегда перезапускать, если служба не остановлена.
  • working_dir : устанавливает каталог по умолчанию для этой службы как /var/www .
  • volumes : создает общий том, который будет синхронизировать содержимое текущего каталога с /var/www внутри контейнера. Обратите внимание, что это не корень вашего документа, поскольку он будет находиться в контейнере nginx .
  • networks : настраивает эту службу для использования сети с именем travellist .

Служба db

Служба db использует предварительно созданный образ MySQL 8.0 из Docker Hub. Поскольку Docker Compose автоматически загружает файлы переменных .env расположенные в том же каталоге, что и файл docker-compose.yml , мы можем получить настройки нашей базы данных из файла .env Laravel, который мы создали на предыдущем шаге.

Включите следующее определение службы в свой узел services сразу после службы app :

docker-compose.yml
 db: image: MySQL: 8.0 имя_контейнера: Travellist-БД перезапуск: если не остановлена среда: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} МYSQL_ПАРОЛЬ: ${DB_PASSWORD} МYSQL_USER: ${DB_USERNAME} SERVICE_TAGS: dev SERVICE_NAME: тома MySQL: - ./docker-compose/mysql:/docker-entrypoint-initdb.d сети: - список путешествий

Эти настройки делают следующее:

  • image : определяет образ Docker, который следует использовать для этого контейнера. В данном случае мы используем образ MySQL 5.7 из Docker Hub.
  • container_name : устанавливает имя контейнера для этой службы: travellist-db .
  • restart : всегда перезапускать эту службу, если она не остановлена явно.
  • environment : определяет переменные среды в новом контейнере. Мы используем значения, полученные из файла .env Laravel, для настройки нашей службы MySQL, которая автоматически создаст новую базу данных и пользователя на основе предоставленных переменных среды.
  • volumes : создает том для совместного использования дампа базы данных .sql , который будет использоваться для инициализации базы данных приложения. Образ MySQL автоматически импортирует файлы .sql , помещенные в каталог /docker-entrypoint-initdb.d внутри контейнера.
  • networks : настраивает эту службу для использования сети с именем travellist .

Служба nginx

Служба nginx использует предварительно созданный образ Nginx поверх Alpine, облегченного дистрибутива Linux. Он создает контейнер с именем travellist-nginx и использует определение ports для создания перенаправления с порта 8000 в хост-системе на порт 80 внутри контейнера.

Включите следующее определение службы в свой узел services сразу после службы db :

docker-compose.yml
 nginx: image: nginx:1.17-alpine имя_контейнера: Travellist-nginx перезапуск: если не остановлены порты: - 8000:80 объемы: - ./:/вар/www - ./docker-compose/nginx:/etc/nginx/conf.d сети: - список путешествий

Эти настройки делают следующее:

  • image : определяет образ Docker, который следует использовать для этого контейнера. В данном случае мы используем образ Alpine Nginx 1.17.
  • container_name : устанавливает имя контейнера для этой службы: travellist-nginx .
  • restart : всегда перезапускать эту службу, если она не остановлена явно.
  • ports : устанавливает перенаправление портов, которое позволит внешний доступ через порт 8000 к веб-серверу, работающему на порту 80 внутри контейнера.
  • volumes : Создает two общих тома. Первый синхронизирует содержимое текущего каталога с /var/www внутри контейнера. Таким образом, когда вы вносите локальные изменения в файлы приложения, они быстро отражаются в приложении, обслуживаемом Nginx внутри контейнера. Второй том обеспечит копирование нашего файла конфигурации Nginx, расположенного по адресу docker-compose/nginx/travellist.conf , в папку конфигурации Nginx контейнера.
  • networks : настраивает эту службу для использования сети с именем travellist .

Готовый файл docker-compose.yml

Вот как выглядит наш готовый файл docker-compose.yml :

docker-compose.yml
 version: "3.7" services: приложение : build: args: пользователь: sammy uid: 1000 контекст: ./ dockerfile: образ Dockerfile: travellist имя_контейнера: приложение Travellist перезапуск: если не остановлен, рабочий_каталог: /var/www/ тома: - ./:/var/www сети: - список путешествий БД : изображение: mysql:8.0 имя_контейнера: Travellist-БД перезапуск: если не остановлена среда: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_USER: ${DB_USERNAME} SERVICE_TAGS: dev SERVICE_NAME: mysql Volumes: - ./docker-compose/mysql:/docker -entrypoint-initdb.d сети: - список путешествий nginx : image: nginx:alpine имя_контейнера: Travellist-nginx перезапуск: если не остановлены порты: - 8000:80 тома: - ./:/var/www - ./docker-compose/nginx:/etc/nginx/conf.d/ network: - сети travellist: travellist: driver: Bridge

Обязательно сохраните файл, когда закончите.

Шаг 6 — Запуск приложения с помощью Docker Compose

Теперь мы будем использовать команды docker-compose для создания образа приложения и запуска сервисов, указанных в нашей настройке.

Создайте образ app с помощью следующей команды:

  1. приложение для сборки docker-compose

Выполнение этой команды может занять несколько минут. Вы увидите вывод, похожий на этот:

Выход
Сборка приложения Отправка контекста сборки демону Docker 377,3 КБ Шаг 1/11: FROM php:7.4-fpm ---> 8c08d993542f Шаг 2/11: Пользователь ARG ---> e3ce3af04d87 Шаг 3/11: ARG uid ---> 30cb921ef7df Шаг 4 из 11: ЗАПУСТИТЕ apt-get update && apt-get install -y git curl libpng-dev libonig-dev libxml2-dev zip unzip. . . ---> b6dbc7a02e95 Шаг 5 из 11: ВЫПОЛНИТЕ apt-get clean && rm -rf /var/lib/apt/lists/* ---> 10ef9dde45ad . . . Шаг 6/11: ЗАПУСТИТЕ docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd. . . ---> 920e4f09ec75 Шаг 7/11: КОПИРОВАТЬ --from=composer:latest /usr/bin/composer /usr/bin/composer ---> dbbcd44e44af Шаг 8/11: ВЫПОЛНИТЬ useradd -G www-data,root - u $uid -d /home/$user $user ---> db98e899a69a Шаг 9 из 11: RUN mkdir -p /home/$user/.composer && chown -R $user:$user /home/$user -- -> 5119e26ebfea Шаг 10/11: WORKDIR /var/www ---> 699c491611c0 Шаг 11/11: ПОЛЬЗОВАТЕЛЬ $user ---> cf250fe8f1af Успешно создан cf250fe8f1af Успешно отмечен список путешествий: последний

Когда сборка завершена, вы можете запустить среду в фоновом режиме с помощью:

  1. докер-составить -d
Выход
Создание travellist-db... готово Создание travellist-app... готово Создание travellist-nginx... готово

Это запустит ваши контейнеры в фоновом режиме. Чтобы просмотреть информацию о состоянии ваших активных служб, запустите:

  1. docker-compose PS

Вы увидите такой вывод:

Выход
Имя Команда Состояние Порты ---------------------------------------------- ------------------------------------------------- список путешествий -app docker-php-entrypoint php-fpm Up 9000/tcp travellist-db docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp travellist-nginx nginx -g демон выключен; Вверх 0.0.0.0:8000->80/tcp,:::8000->80/tcp

Теперь ваша среда запущена и работает, но нам все еще нужно выполнить пару команд, чтобы завершить настройку приложения. Вы можете использовать команду docker-compose exec для выполнения команд в сервисных контейнерах, например ls -l для отображения подробной информации о файлах в каталоге приложения:

  1. docker-compose exec приложение лс
Выход
всего 256 -rw-r--r-- 1 Сэмми Сэмми 737 18 апреля 14:21 Dockerfile -rw-r--r-- 1 Сэмми Сэмми 101 7 января 2020 г. README.md drwxr-xr-x 6 Сэмми Сэмми 4096 Янв. 7 Приложение 2020 г. -rwxr-xr-x 1 Сэмми Сэмми 1686 7 января 2020 г. artisan drwxr-xr-x 3 Сэмми Сэмми 4096 7 января 2020 г. Bootstrap -rw-r--r-- 1 Сэмми Сэмми 1501 7 января 2020 г. композитор.json - rw-r--r-- 1 Сэмми Сэмми 179071 7 января 2020 г. композитор.lock drwxr-xr-x 2 Сэмми Сэмми 4096 7 января 2020 г. config drwxr-xr-x 5 Сэмми Сэмми 4096 7 января 2020 г. база данных drwxr-xr-x 4 Сэмми Сэмми 4096 18 апреля 14:22 docker-compose -rw-r--r-- 1 Сэмми Сэмми 1017 18 апреля 14:29 docker-compose.yml -rw-r--r-- 1 Сэмми Сэмми 1013 7 января 2020 г. package.json -rw-r--r-- 1 Сэмми Сэмми 1405 7 января 2020 г. phpunit.xml drwxr-xr-x 2 Сэмми Сэмми 4096 7 января 2020 г. public -rw-r--r-- 1 Сэмми Сэмми 273 7 января 2020 г. 2020 readme.md drwxr-xr-x 6 Сэмми Сэмми 4096 7 января 2020 ресурсы drwxr-xr-x 2 Сэмми Сэмми 4096 7 января 2020 г. маршруты -rw-r--r-- 1 Сэмми Сэмми 563 7 января 2020 г. server.php drwxr -xr-x 5 Sammy Sammy 4096 7 января 2020 г. хранилище drwxr-xr-x 4 Sammy Sammy 4096 7 января 2020 г. тесты -rw-r--r-- 1 Sammy Sammy 538 7 января 2020 г. webpack.mix.js

Теперь мы запустим composer install , чтобы установить зависимости приложения:

  1. исполнительное приложение docker-compose rm -rf поставщик композитора.lock
  2. исполнительное приложение docker-compose установка композитора

Вы увидите такой вывод:

Выход
Файл композитора.lock отсутствует. Обновление зависимостей до последней версии вместо установки из файла блокировки. См. https://getcomposer.org/install для получения дополнительной информации. . . . Операции с файлами блокировки: 89 установок, 0 обновлений, 0 удалений. v2.3.1) - Блокировка egulias/email-validator (2.1.25) - Блокировка фасада/flare-client-php (1.9.1) - Блокировка фасада/зажигания (1.18.1) - Блокировка фасада/контрактов зажигания (1.0. 2) - Блокировка фиделопера/прокси (4.4.1) - Блокировка фидельопера/прокси (2.14.5) . . . Написание файла блокировки. Установка зависимостей из файла блокировки (включая require-dev). Операции с пакетами: 89 установок, 0 обновлений, 0 удалений. -expression (v2.3.1) - Загрузка symfony/polyfill-php80 (v1.25.0) - Загрузка symfony/polyfill-php72 (v1.25.0) - Загрузка symfony/polyfill-mbstring (v1.25.0) - Загрузка symfony/var-dumper (v4.4.39) - Загрузка symfony/deprecation-contracts (v2.5.1). . . Генерация оптимизированных файлов автозагрузки > IlluminateFoundationComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Обнаруженный пакет: фасад/ignition Обнаруженный пакет: fideloper/proxy Обнаруженный пакет: laravel/tinker Обнаруженный пакет: nesbot/carbon Обнаруженный пакет: nunomaduro/collision Манифест пакета успешно создан.

Последнее, что нам нужно сделать перед тестированием приложения, — это сгенерировать уникальный ключ приложения с помощью инструмента командной строки artisan Laravel. Этот ключ используется для шифрования пользовательских сеансов и других конфиденциальных данных:

  1. исполнительное приложение docker-compose Ключ php artisan: сгенерировать
Выход
Ключ приложения установлен успешно.

Теперь зайдите в браузер и получите доступ к доменному имени или IP-адресу вашего сервера через порт 8000:

 http://server_domain_or_IP:8000

Note . Если вы запускаете эту демонстрацию на своем локальном компьютере, используйте http://localhost:8000 для доступа к приложению из браузера.

Вы увидите такую страницу:

Демо-приложение Laravel

Вы можете использовать команду logs для проверки журналов, созданных вашими сервисами:

  1. docker-compose журналы nginx
 Attaching to Travellist-nginx . . . список путешествий-nginx | 172.24.9.1 - - [18 апреля 2022 г.:14:49:16 +0000] "GET / HTTP/1.1" 200 627 "-" "curl/7.82.0" travellist-nginx | 172.24.9.1 - - [18/Apr/2022:14:51:27 +0000] "GET / HTTP/1.1" 200 627 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:89.0) Gecko/20100101 Firefox /89.0" Travellist-nginx | 172.24.9.1 - - [18 апреля 2022 г.: 14:51:27 +0000] "GET /favicon.ico HTTP/1.1" 200 0 "http://localhost:8000/" "Mozilla/5.0 (X11; Linux) x86_64; rv:89.0) Gecko/20100101 Firefox/89.0"

Если вы хотите приостановить работу среды Docker Compose, сохранив при этом состояние всех ее служб, запустите:

  1. docker-compose пауза
Выход
Приостановка travellist-db ... готово Приостановка travellist-nginx ... готово Приостановка travellist-app ... готово

Затем вы можете возобновить предоставление услуг с помощью:

  1. docker-compose снять паузу
Выход
Снятие с паузы travellist-app ... готово Снятие с паузы travellist-nginx ... готово Снятие с паузы travellist-db ... готово

Чтобы завершить работу среды Docker Compose и удалить все ее контейнеры, сети и тома, выполните:

  1. docker-compose вниз
Выход
Остановка travellist-nginx ... готово Остановка travellist-db ... готово Остановка travellist-app ... готово Удаление travellist-nginx ... готово Удаление travellist-db ... готово Удаление travellist-app ... готово Удаление сети travellist-laravel-demo_travellist

Обзор всех команд Docker Compose см. в справочнике по командной строке Docker Compose.

Заключение

В этом руководстве мы настроили среду Docker с тремя контейнерами, используя Docker Compose, чтобы определить нашу инфраструктуру в файле YAML.

С этого момента вы можете работать над своим приложением Laravel без необходимости устанавливать и настраивать локальный веб-сервер для разработки и тестирования. Более того, вы будете работать с одноразовой средой, которую можно легко тиражировать и распространять, что может быть полезно при разработке приложения, а также при переходе к производственной среде.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *