Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як запускати Laravel у Docker правильно?

Один образ - кілька процесів. Той самий образ запускається як вебсервер, воркер черги й планувальник - різними командами. Код у всіх однаковий, масштабуються вони окремо.

services:
  app:       { image: app:1.4.2, command: frankenphp run }
  worker:    { image: app:1.4.2, command: php artisan queue:work --max-time=3600 }
  scheduler: { image: app:1.4.2, command: php artisan schedule:work }

Що робити під час збирання образу: composer install --no-dev --optimize-autoloader, збирання ассетів, view:cache, event:cache, route:cache.

Що НЕ робити під час збирання: config:cache. У кеш потрапить оточення збирання, а не продакшену - конфігурацію кешують на старті контейнера, коли змінні оточення вже є.

Стан - назовні:

  • сесії, кеш, черги - Redis чи база, а не файли контейнера;
  • завантаження - S3-сумісне сховище чи том;
  • журнали - у stdout/stderr (канал stderr), їх збирає платформа.

Інше:

  • права на storage і bootstrap/cache для користувача PHP-процесу;
  • міграції - окремим кроком деплою, не в старті кожного контейнера;
  • пінити версію базового образу: плаваючий тег може принести нову версію PHP чи бібліотек без вашого відома;
  • /up - для перевірки стану контейнера.

Докладніше в документації: Оптимізація

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання