Laravel Docker · 16 min read · Sep 23, 2025
Как установить Laravel с помощью Docker на Ubuntu 22.04

Laravel — это бесплатный и открытый PHP-фреймворк, который предоставляет набор инструментов и ресурсов для создания современных PHP-приложений. С широким разнообразием совместимых пакетов и расширений Laravel стал популярным, и многие разработчики выбрали его в качестве своего фреймворка. Laravel предоставляет мощные инструменты для работы с базами данных, включая ORM (объектно-реляционный отображатель) под названием Eloquent и встроенные механизмы для создания миграций баз данных. Он поставляется с инструментом командной строки Artisan, с помощью которого разработчики могут создавать новые модели, контроллеры и другие компоненты приложения, что ускоряет общий процесс разработки приложения.
Контейнеризация приложения относится к процессу адаптации приложения и его компонентов для возможности запуска в легковесных средах, известных как контейнеры. Этот гид будет использовать Docker Compose для контейнеризации приложения Laravel для разработки.
Мы создадим три контейнера Docker для нашего приложения Laravel.
- Сервис
app, работающий на PHP 8.2-FPM - Сервис
db, работающий на MySQL 8.0 - Сервис
nginx, который использует сервисappдля обработки PHP-кода перед тем, как предоставить приложение Laravel пользователю
Мы также создадим SSL-сертификат для нашего сайта Laravel с помощью Let’s Encrypt.
Предварительные требования
- Сервер с установленным Ubuntu 22.04.
- Пользователь без прав root с правами sudo.
- Полностью квалифицированное доменное имя (FQDN), указывающее на ваш сервер. Для наших целей мы будем использовать
example.comв качестве доменного имени. - Убедитесь, что все обновлено.
$ sudo apt update - Установите базовые утилиты. Некоторые из них могут быть уже установлены.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Шаг 1 - Настройка брандмауэра
Первый шаг — настроить брандмауэр. Ubuntu по умолчанию поставляется с ufw (Uncomplicated Firewall).
Проверьте, работает ли брандмауэр.
$ sudo ufw status
Вы должны получить следующий вывод.
Status: inactive
Разрешите порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.
$ sudo ufw allow OpenSSH
Также разрешите порты HTTP и HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Включите брандмауэр
$ sudo ufw enable
Команда может нарушить существующие ssh-соединения. Продолжить операцию (y|n)? y
Брандмауэр активен и включен при запуске системы
Проверьте статус брандмауэра снова.
$ sudo ufw status
Вы должны увидеть аналогичный вывод.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Шаг 2 - Установка SSL
Перед тем как продолжить, давайте сначала создадим SSL-сертификат для нашего домена. Мы создадим его вне Docker, так как это проще в обслуживании. Позже мы синхронизируем сертификаты с контейнером, который будет регулярно обновляться и обновляться.
Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot, используя репозиторий Ubuntu, или получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.
Ubuntu 22.04 поставляется с установленным Snapd по умолчанию. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd актуальна. Убедитесь, что ваша версия Snapd актуальна.
$ sudo snap install core
$ sudo snap refresh core
Установите Certbot.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команда Certbot работает, создав символическую ссылку в директории /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Выполните следующую команду для генерации SSL-сертификата.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com
Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/example.com на вашем сервере.
Сгенерируйте сертификат Diffie-Hellman group.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Проведите пробный запуск процесса, чтобы проверить, работает ли обновление SSL.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.
После настройки Docker и установки Laravel процесс обновления нужно будет изменить. Мы рассмотрим это в следующем разделе.
Шаг 3 - Установка Docker и Docker Compose
Ubuntu 22.04 поставляется со старой версией Docker. Чтобы установить последнюю версию, сначала импортируйте GPG-ключ Docker.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Создайте файл репозитория Docker.
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновите список репозиториев системы.
$ sudo apt update
Установите последнюю версию Docker.
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Проверьте, что он работает.
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-01-14 10:41:35 UTC; 2min 1s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 2054 (dockerd)
Tasks: 52
Memory: 22.5M
CPU: 248ms
CGroup: /system.slice/docker.service
?? 2054 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
По умолчанию Docker требует прав root. Если вы хотите избежать использования sudo каждый раз, когда вы выполняете команду docker, добавьте свое имя пользователя в группу docker.
$ sudo usermod -aG docker $(whoami)
Вам нужно будет выйти из сервера и войти снова как тот же пользователь, чтобы активировать это изменение, или использовать следующую команду.
$ su - ${USER}
Подтвердите, что ваш пользователь добавлен в группу Docker.
$ groups
navjot wheel docker
Шаг 4 - Скачивание Laravel и установка зависимостей
Первый шаг — скачать последнюю версию Laravel и установить зависимости, включая Composer, менеджер пакетов PHP.
Создайте директорию приложения Laravel.
$ mkdir ~/laravel
Перейдите в директорию.
$ cd ~/laravel
Клонируйте последнюю версию Laravel в директорию. Не забудьте . в конце команды, что означает, что Git клонирует файлы в текущую директорию.
$ git clone https://github.com/laravel/laravel.git .
Используйте образ Docker Compose, чтобы смонтировать директории, необходимые для вашего проекта Laravel. Это позволяет избежать необходимости устанавливать Composer глобально.
$ docker run --rm -v $(pwd):/app composer install
Вышеуказанная команда создает эфемерный контейнер, который монтируется в вашу текущую директорию перед удалением. Он копирует содержимое вашей директории Laravel в контейнер и гарантирует, что папка vendor, которую Composer создает внутри контейнера, копируется обратно в текущую директорию.
Установите права на директорию Laravel так, чтобы она принадлежала текущему вошедшему пользователю.
$ sudo chown -R $USER:$USER ~/laravel
Шаг 5 - Создание файла Docker Compose
Создайте и откройте файл Docker compose для редактирования.
$ nano docker-compose.yml
Вставьте в него следующий код. Здесь мы определяем три сервиса: app, webserver и db. Замените MYSQL_ROOT_PASSWORD в сервисе db на надежный пароль на ваш выбор.
services:
app:
build:
context: .
dockerfile: Dockerfile
image: howtoforge/app
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www
volumes:
- ./:/var/www
- ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
webserver:
container_name: webserver
image: nginx:alpine
restart: unless-stopped
tty: true
ports:
- 80:80
- 443:443
volumes:
- ./:/var/www
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx
- /etc/ssl/certs/dhparam.pem:/etc/ssl/certs/dhparam.pem
- /etc/letsencrypt:/etc/letsencrypt
logging:
options:
max-size: "10m"
max-file: "3"
networks:
- app-network
db:
image: mysql:latest
container_name: db
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: laravel
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_USER: laraveluser
MYSQL_PASSWORD: password
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- dbdata:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/my.cnf
networks:
- app-network
volumes:
dbdata:
driver: local
networks:
app-network:
driver: bridge
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Давайте подробно рассмотрим сервисы.
app- Этот сервис определяет приложение Laravel и запускает пользовательский образ Docker под названиемhowtoforge/app. Мы создадим этот образ на следующем шаге. Рабочая директория для Laravel внутри контейнера установлена в/var/www, которая сопоставляется с текущей директорией на хосте. Мы также монтируем файл конфигурации PHP, который копируется в контейнер PHP. Мы настроим это на следующем шаге.webserver- Этот сервис создает контейнер, используя образ Docker Nginx и открывает порты 80 и 443 для хоста. Мы также монтируем тома для логов Nginx, пользовательской конфигурации, директории приложения Laravel и SSL-сертификатов.db- Этот сервис создает контейнер, используя образ Docker MySQL, и определяет переменные окружения для настройки имени базы данных и пароля root MySQL. Вы можете назвать базу данных как угодно и заменитьMYSQL_ROOT_PASSWORDна надежный пароль на ваш выбор. Также установите имя пользователя MySQL (MYSQL_USER_NAME) и пароль (MYSQL_USER_PASSWORD), которые будут иметь доступ к выбранной вами базе данных. Этот сервис также сопоставляет порт 3306 из контейнера с портом 3306 на хосте. Мы также монтируем том для пользовательской конфигурации MySQL и локальный том для данных MySQL. Это позволяет вам перезапустить сервисdb, не потеряв данные.
Чтобы сделать сервисы взаимосвязанными, мы создали сеть Docker под названием app-network. Она установлена как мостовая сеть. Это позволяет контейнерам, подключенным к ней, общаться друг с другом. Драйвер мостовой сети устанавливает правила на хост-машине, чтобы контейнеры на разных мостовых сетях не могли напрямую общаться друг с другом.
Шаг 6 - Создание Dockerfile
Dockerfile используется для создания пользовательских образов. Нет стандартного образа для Laravel, поэтому нам нужно определить Dockerfile для создания пользовательского образа для Laravel. Он содержит команды для установки пакетов и настройки окружения Linux в зависимости от потребностей вашего приложения. Вы также можете опубликовать свой пользовательский образ в Docker Hub или любом частном реестре Docker. Вы можете узнать больше в нашем учебнике по Dockerfile.
Создайте и откройте Dockerfile для редактирования.
$ nano Dockerfile
Вставьте в него следующий код.
FROM php:8.2-fpm
# Копируем composer.lock и composer.json
COPY composer.lock composer.json /var/www/
# Устанавливаем рабочую директорию
WORKDIR /var/www
# Устанавливаем зависимости
RUN apt-get update && apt-get install -y \
build-essential \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
libzip-dev \
unzip \
git \
curl \
libonig-dev
# Очищаем кэш
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Устанавливаем расширения
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd
# Устанавливаем composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Копируем содержимое существующей директории приложения в рабочую директорию
COPY . /var/www
# Устанавливаем права на рабочую директорию для пользователя www-data
RUN chown -R www-data:www-data \
/var/www/storage \
/var/www/bootstrap/cache
# Устанавливаем права на запись для логов и директорий фреймворка
RUN chmod 775 storage/logs \
/var/www/storage/framework/sessions \
/var/www/storage/framework/views
# Открываем порт 9000 и запускаем сервер php-fpm
EXPOSE 9000
CMD ["php-fpm"]
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Давайте посмотрим, что здесь происходит. Сначала мы создаем наш пользовательский образ на основе образа php:8.2-fpm Docker. Это образ на базе Debian, в котором установлен PHP 8.2-FPM. Dockerfile использует различные директивы для выполнения операций, директива RUN указывает команды для обновления, установки и настройки параметров внутри контейнера, директива COPY для копирования файлов в контейнер, директива EXPOSE для открытия порта в контейнере и директива CMD для выполнения команды.
Сначала мы копируем файлы Composer из директории Laravel на хосте внутрь контейнера в директорию /var/www. Мы также устанавливаем рабочую директорию для контейнера в /var/www. Затем мы устанавливаем различные предварительные требования и пакеты, необходимые для работы Laravel, включая расширения PHP, такие как mbstring, gd, exif, zip, pdo_mysql и pcntl. Затем мы устанавливаем менеджер пакетов Composer.
Затем мы копируем все файлы из директории Laravel в контейнер и устанавливаем права на рабочую директорию для пользователя www-data. Это пользователь, который PHP использует по умолчанию на платформе Debian. Затем мы устанавливаем правильные права на запись для директорий логов, сессий и представлений Laravel.
И, наконец, мы открываем 9000 порт для службы PHP-FPM, который будет использоваться сервером Nginx, и запускаем команду PHP для старта контейнера.
Шаг 7 - Настройка PHP
Создайте директорию PHP.
$ mkdir ~/laravel/php
Создайте и откройте файл local.ini для редактирования.
$ nano local.ini
Вставьте в него следующий код.
upload_max_filesize=40M
post_max_size=40M
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Эти директивы устанавливают максимальный размер загружаемых файлов. Измените значение в соответствии с вашими требованиями. Вы можете добавить любую конфигурацию, специфичную для PHP, чтобы переопределить стандартные директивы.
Шаг 8 - Настройка Nginx
Создайте директорию Nginx для конфигурации сайта.
$ mkdir ~/laravel/nginx/conf.d -p
Нам нужно создать файл конфигурации Nginx, чтобы использовать PHP-FPM в качестве сервера FastCGI для обслуживания Laravel.
Создайте и откройте файл app.conf для редактирования.
$ nano ~/laravel/nginx/conf.d/app.conf
Вставьте в него следующий код.
server {
# Перенаправляем любые http-запросы на https
listen 80;
listen [::]:80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
client_max_body_size 40m;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_ecdh_curve secp384r1;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
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;
}
}
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Вышеуказанный файл настраивает Nginx для обслуживания как HTTP, так и HTTPS версий сайта Laravel и автоматически перенаправляет любые HTTP-запросы на HTTPS. Убедитесь, что значение переменной client_max_body_size соответствует размеру загрузки, установленному на предыдущем шаге.
В блоке местоположения PHP директива fastcgi_pass указывает, что сервис app слушает на TCP-сокете на порту 9000. Сервер PHP-FPM также может слушать на Unix-сокете, что имеет преимущество перед TCP-сокетом. Но это не работает, если сервисы работают на разных хостах, что и происходит здесь, так как контейнер app работает на другом хосте, чем ваш контейнер webserver.
Шаг 9 - Настройка MySQL
Мы настроим MySQL, чтобы включить общий журнал запросов и указать соответствующий файл журнала.
Создайте директорию MySQL.
$ mkdir ~/laravel/mysql
Создайте и откройте файл my.cnf для редактирования.
$ nano ~/laravel/my.cnf
Вставьте в него следующий код.
[mysqld]
general_log = 1
general_log_file = /var/lib/mysql/general.log
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Шаг 10 - Настройка файла окружения
Теперь, когда мы создали и настроили все сервисы, пришло время запустить контейнеры. Но перед тем как это сделать, нам нужно настроить переменные окружения для Laravel. Laravel поставляется с файлом окружения по умолчанию, .env.example.
Создайте копию файла окружения примера.
$ cp .env.example .env
Откройте файл .env для редактирования.
$ nano .env
Найдите блок, начинающийся с DB_CONNECTION, и обновите значения переменных в соответствии с вашими требованиями.
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laraveluser
DB_PASSWORD=your_laravel_db_password
Значение DB_HOST будет сервисом db. DB_NAME, DB_USERNAME и DB_PASSWORD будут именем базы данных, именем пользователя и паролем, которые вы выбрали на шаге 4 в файле Docker compose.
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Шаг 11 - Запуск контейнеров и завершение установки Laravel
Наконец, пришло время запустить контейнеры.
$ docker compose up -d
Эта команда, когда выполняется в первый раз, загрузит образы Nginx, MySQL и создаст образ app, используя Dockerfile, который мы создали. После завершения процесса вы можете проверить статус ваших контейнеров, используя следующую команду.
$ docker ps
Вы увидите аналогичный вывод.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a57be976c0fa mysql:latest "docker-entrypoint.s…" 6 hours ago Up 6 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp db
85e515c4a404 howtoforge/app "docker-php-entrypoi…" 6 hours ago Up 6 hours 9000/tcp app
8418bbc83bd3 nginx:alpine "/docker-entrypoint.…" 6 hours ago Up 6 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp webserver
После того как контейнеры запущены, пришло время завершить установку Laravel, используя команду docker compose exec, чтобы выполнять команды внутри контейнера.
Сгенерируйте ключ приложения и скопируйте его в ваш файл .env, чтобы обеспечить безопасность пользовательских сессий и шифрование пользовательских данных.
$ docker compose exec app php artisan key:generate
Создайте кэш приложения Laravel.
$ docker compose exec app php artisan config:cache
Эта команда загрузит настройки конфигурации в файл /var/www/bootstrap/cache/config.php.
Перейдите по адресу https://example.com в вашем браузере, и вы увидите следующую страницу, что подразумевает успешную установку Laravel.

Шаг 12 - Настройка обновления SSL
Теперь, когда сайт Laravel активен, пришло время вернуться к настройкам SSL, чтобы настроить обновление. Для этого нам нужно создать скрипты, чтобы остановить сервис webserver перед началом обновления и снова запустить сервис после обновления сертификата. Certbot предоставляет два хуки, pre_hook и post_hook, для этой цели.
Создайте директорию SSL для хранения скриптов.
$ mkdir ~/laravel/ssl
Создайте скрипт server-stop.sh.
$ sh -c 'printf "#!/bin/sh\ndocker stop webserver\n" > ~/laravel/ssl/server-stop.sh'
Создайте скрипт server-start.sh.
$ sh -c 'printf "#!/bin/sh\ndocker start webserver\n" > ~/laravel/ssl/server-start.sh'
Сделайте скрипты исполняемыми.
$ chmod +x ~/laravel/ssl/server-*.sh
Теперь нам нужно сказать Certbot использовать эти скрипты. Откройте файл /etc/letsencrypt/renewal/example.com.conf для редактирования.
$ sudo nano /etc/letsencrypt/renewal/example.com.conf
Вставьте следующие строки в конец файла.
pre_hook = /home//laravel/ssl/server-stop.sh
post_hook = /home//laravel/ssl/server-start.sh
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Проверьте процесс обновления сертификата, выполнив пробный запуск.
$ sudo certbot renew --dry-run
Вы получите аналогичный вывод, подтверждающий успех.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Hook 'pre-hook' ran with output:
webserver
Simulating renewal of an existing certificate for example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/example.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hook 'post-hook' ran with output:
webserver
Ваши SSL-сертификаты теперь будут автоматически обновляться и использоваться контейнером Docker для обслуживания вашего приложения Laravel.
Шаг 13 - Миграция данных и консоль Tinker
Теперь, когда приложение работает, вы можете мигрировать свои данные и экспериментировать с командой tinker. Tinker — это REPL (Read-Eval-Print Loop) для Laravel. Команда tinker инициирует консоль PsySH с предзагруженным Laravel. PsySH — это консоль разработчика во время выполнения и интерактивный отладчик для PHP. Команда tinker позволяет вам взаимодействовать с приложением Laravel из командной строки в интерактивной оболочке.
Проверьте соединение с MySQL, используя команду artisan migrate в контейнере. Это создаст таблицу migrations в базе данных.
$ docker compose exec app php artisan migrate
Вы получите следующий вывод.
INFO Preparing database.
Creating migration table .............................................................................................. 32ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table .................................................................................. 184ms DONE
2014_10_12_100000_create_password_resets_table ......................................................................... 259ms DONE
2019_08_19_000000_create_failed_jobs_table ............................................................................ 102ms DONE
2019_12_14_000001_create_personal_access_tokens_table .................................................................. 46ms DONE
Затем запустите консоль PsySH, используя команду tinker.
$ docker compose exec app php artisan tinker
Вы получите следующий запрос.
Psy Shell v0.11.10 (PHP 8.2.1 — cli) by Justin Hileman
>
Проверьте соединение с MySQL, получив данные, которые вы только что мигрировали, выполнив следующую команду на запросе консоли.
> \DB::table('migrations')->get();
Вы получите следующий вывод.
= Illuminate\Support\Collection {#3670
all: [
{#3679
+"id": 1,
+"migration": "2014_10_12_000000_create_users_table",
+"batch": 1,
},
{#3681
+"id": 2,
+"migration": "2014_10_12_100000_create_password_resets_table",
+"batch": 1,
},
{#3682
+"id": 3,
+"migration": "2019_08_19_000000_create_failed_jobs_table",
+"batch": 1,
},
{#3683
+"id": 4,
+"migration": "2019_12_14_000001_create_personal_access_tokens_table",
+"batch": 1,
},
],
}
Введите exit, чтобы выйти из консоли.
> exit
INFO Goodbye.
Вы можете использовать tinker, чтобы взаимодействовать с вашими базами данных и экспериментировать с сервисами и моделями. Теперь вы можете начать использовать Laravel для дальнейшей разработки.
Заключение
Это завершает наш учебник, в котором вы контейнеризировали и установили приложение Laravel с помощью Docker, MySQL и PHP. Вы также обслуживали приложение на безопасном доменном имени. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.