Два способа деплоя
Вам нужны приложение Laravel, Git-репозиторий и аккаунт cdn.com.tr. Есть два пути, и можно выбрать любой. Управляемая платформа PHP запускает ваше приложение Laravel на современной среде выполнения PHP 8 с управляемой базой данных, Redis, автоматическим SSL и WAF — писать Dockerfile не нужно. Путь через контейнер даёт полный контроль: вы предоставляете Dockerfile, а платформа собирает и запускает его как управляемое container app. Оба варианта работают за CDN edge. В этом руководстве подробно разобран путь через контейнер, а там, где проще, указывается на управляемую платформу.
Конфигурация и секреты
Никогда не встраивайте .env в образ и не коммитьте секреты в Git. Вместо этого задавайте конфигурацию Laravel как переменные окружения (и секреты) на платформе, чтобы один и тот же образ безопасно работал в production. Как минимум вы зададите ключ приложения, окружение и подключения к управляемым базе данных и Redis.
Значения окружения для настройки на платформе
APP_ENV=production
APP_KEY=base64:... # php artisan key:generate --show
APP_DEBUG=false
APP_URL=https://app.example.com
DB_CONNECTION=mysql
DB_HOST=<managed-db-host>
DB_DATABASE=<db>
DB_USERNAME=<user>
DB_PASSWORD=<secret>
CACHE_STORE=redis
SESSION_DRIVER=redis
REDIS_HOST=<managed-redis-host>
Добавьте Dockerfile
Закоммитьте Dockerfile в корень репозитория. В этом примере устанавливаются зависимости Composer, и приложение отдаётся на порту 8000. Встроенный сервер Laravel делает пример простым; при высокой нагрузке замените последнюю строку на Laravel Octane (FrankenPHP или Swoole) или используйте вместо этого управляемую платформу PHP.
Dockerfile
FROM php:8.2-cli
# PHP extensions Laravel commonly needs
RUN apt-get update && apt-get install -y libzip-dev \
&& docker-php-ext-install pdo_mysql zip opcache
# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY . .
RUN composer install --no-dev --optimize-autoloader --no-interaction
EXPOSE 8000
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]
Деплой из Git
В панели cdn.com.tr создайте container app и подключите свой Git-репозиторий. Платформа читает ваш Dockerfile, собирает образ и запускает контейнер. После этого деплой — это просто push в вашу ветку: каждый push собирает новый образ и выкатывает его без простоя.
Выпустите изменение
git add .
git commit -m "Add invoices page"
git push origin main
# cdn.com.tr builds the image and rolls it out automatically
Управляемая база данных, Redis и миграции
Подключите управляемую базу данных и Redis одной командой cdnctl для каждого — они передают подключение вашему приложению как переменные окружения, так что значения .env из шага 2 задаются за вас. Redis даёт Laravel быстрый кеш и хранилище сессий; управляемая база данных резервируется и доступна из приложения. Затем выполняйте миграции для неё как часть деплоя, чтобы схема оставалась синхронизированной.
cdnctl accounts use <account_uuid>
cdnctl container addons enable-database --app <app_uuid> --url-scheme mysql
cdnctl container addons enable-redis --app <app_uuid> --env-prefix REDIS
# run migrations against the managed database
php artisan migrate --force
Домен, HTTPS и edge
Направьте домен на приложение, и cdn.com.tr автоматически выпустит и продлит SSL. Ваше приложение Laravel теперь работает за CDN edge: статические ресурсы кешируются и отдаются близко к посетителям, WAF фильтрует вредоносный трафик, а всплески поглощаются на edge. Если вы вообще не хотите заниматься Dockerfile, управляемая платформа PHP даёт тот же результат — среда выполнения PHP 8, управляемые БД и Redis, автоматический HTTPS и WAF — без сборки образа.
Кому подходит
Запускайте Laravel с управляемой базой данных и Redis, автоматическим HTTPS и WAF, разворачивая прямо из Git.
Перенесите старое PHP-приложение на PHP 8 на управляемой платформе, за CDN и WAF, без изменения архитектуры.
Отдавайте маршруты API Laravel как управляемый контейнер с healthcheck, секретами и маршрутизацией на edge.
Вопросы и ответы о деплое Laravel
Нужен ли мне Docker, или можно использовать управляемую платформу?
Подходит любой вариант. Управляемая платформа PHP запускает Laravel без Dockerfile — вы получаете среду выполнения PHP 8 с управляемой базой данных, Redis, HTTPS и WAF. Путь через контейнер подходит командам, которым нужен полный контроль над образом; оба варианта работают за edge.
Где выполняются очереди и планировщик?
Запускайте планировщик и воркеры очередей Laravel как запланированные или долго работающие задачи рядом с приложением, указывая на те же управляемые Redis/базу данных. Храните секреты в переменных окружения, чтобы все процессы использовали одну конфигурацию.
Как работают миграции базы данных при деплое?
Выполняйте 'php artisan migrate --force' для управляемой базы данных как часть деплоя. Поскольку при неудачной сборке продолжает работать предыдущая версия, вы безопасно продвигаетесь вперёд, а схема остаётся синхронизированной с кодом.