Lab

Как запустить Laravel в Docker за 5 минут на чистом VPS Ubuntu Server

В этой заметке я поделюсь моим roadmap, как быстро поднять проект на Laravel на VPS с нуля, не ковыряясь в настройках nginx, php-fpm и баз.

Вот пошаговая инструкция, как это сделать с помощью Docker — просто, понятно и работает всегда.

Шаг 1. Ставим Docker и Docker Compose

Залетаем на чистый VPS с Ubuntu (например, 22.04 LTS):

ssh user@your-server-ip

Обновляем систему:

sudo apt update && sudo apt upgrade -y

Ставим пакеты для работы с Docker:

sudo apt install -y ca-certificates curl gnupg lsb-release

Добавляем Docker GPG-ключ:

sudo mkdir -p /etc/apt/keyrings
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

Устанавливаем Docker:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Проверяем что всё ок:

docker --version
docker compose version

Шаг 2. Клонируем проект или создаём новый Laravel

Если у тебя уже есть проект:

git clone https://github.com/your-project.git
cd your-project

Если хочешь создать с нуля:

mkdir my-laravel-app && cd my-laravel-app

Кидаем в корень docker-compose.yml, Dockerfile, nginx/conf.d/default.conf — как я показывал выше.

Шаг 3. Генерируем Laravel проект (если новый)

Добавим Composer в docker-compose.yml:

  composer:
    image: composer:latest
    container_name: composer
    volumes:
      - ./app:/app
    working_dir: /app

Запускаем создание проекта:

docker compose run --rm composer create-project laravel/laravel .

Шаг 4. Запускаем Laravel в Docker

Собираем и поднимаем всё:

docker compose up -d --build

Через пару секунд Laravel будет доступен по IP сервера (или домену) на порту 80.

Шаг 5. Подключаем базу

В .env Laravel указываем параметры PostgreSQL:

DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravelpassword

Чтобы применить — рестартим:

docker compose restart app

Полезные команды

Посмотреть логи:

docker compose logs -f

Перезапустить всё:

docker compose restart

Остановить:

docker compose down

Готово! Laravel в Docker

Теперь ты можешь быстро запускать Laravel на любом VPS всего за 5 минут.
Можно легко обновлять PHP, менять версию PostgreSQL, деплоить новые версии проекта.