Sail: оточення та деплой

Як організувати змінні оточення для Sail, команди та CI — і чим це відрізняється від staging/production. Див. також Sail, БД і Черги.

Навігація: Усі інструменти · Sail · БД · Черги · Діагностика

Зміст


.env, .env.example, секрети

  • .env: локальні секрети; не комітити. Копіювати з .env.example після клону.
  • .env.example: безпечні дефолти, документувати кожен ключ (DB_*, REDIS_*, QUEUE_*, MAIL_*, Scout тощо). Специфіка Sail: WWWUSER, WWWGROUP, FORWARD_DB_PORT, …
  • Команда: домовтеся, чи потрібен Laravel env для команд на хості (наприклад npm на Mac); часто важливі лише контейнерні команди.
  • Production: секрети через хостинг, Vault або masked variables у CI — не копійований .env у образі.

FORWARD_* порти та колізії

Sail пробросить БД, Redis, Meilisearch тощо на localhost. Кілька проєктів одночасно — задайте в .env:

FORWARD_DB_PORT=3307
FORWARD_REDIS_PORT=6380

Перезапустіть Compose. Усередині контейнерів порти лишаються стандартними (3306, 6379); змінюється лише хост-маппінг.


APP_URL і довірені проксі

Для підписаних URL, OAuth тощо:

APP_URL=http://localhost

Використовуйте хост-порт, який реально відкриваєте (напр. http://localhost:80). За Traefik/nginx на сервері налаштуйте TrustProxies і реальний APP_URL з https.


Опційний env_file у Compose

Можна підвантажити додатковий файл у docker-compose.yml:

laravel.test:
    env_file:
        - .env
        - .env.docker.local

Зручно для індивідуальних перевизначень без зміни спільного .env. Документуйте ключі в README.


CI: приклад GitHub Actions

Мінімальна ідея: checkout, скопіювати .env.ci.env, docker compose run тести.

- name: Run tests in Sail
  run: |
    cp .env.ci .env
    docker compose up -d
    docker compose exec -T laravel.test php artisan test

Підлаштуйте імена сервісів під ваш опублікований compose. Окремо кешуйте Composer/npm у CI.


Sail vs dev/staging/prod

  • Sail оптимізує зручність розробника (Mailpit, проброс портів, одновузлова БД).
  • Спільний dev/staging — довгоживуче оточення; все одно не production HA.
  • Production потребує TLS, бекапи, моніторинг, логи, нагляд за чергами, репліки БД, ротацію секретів — Sail це сам по собі не закриває.

Можна повторно використовувати образи з Sail Dockerfile, але оркестрація (compose, env, масштаб) буде іншою.


Чеклист перед запуском

  • [ ] APP_ENV=production, APP_DEBUG=false, надійний APP_KEY
  • [ ] Реальні DB_* / REDIS_* (керовані сервіси)
  • [ ] QUEUE_CONNECTION узгоджено з керованими воркерами
  • [ ] schedule:run у cron (або керований планувальник)
  • [ ] Живі ключі пошти/SMS/платежів у сховищі секретів
  • [ ] LOG_CHANNEL і ретенція відповідають вимогам

Див. також

← Усі інструменти