Sail: оточення та деплой
Як організувати змінні оточення для Sail, команди та CI — і чим це відрізняється від staging/production. Див. також Sail, БД і Черги.
Навігація: Усі інструменти · Sail · БД · Черги · Діагностика
Зміст
.env,.env.example, секретиFORWARD_*порти та колізіїAPP_URLі довірені проксі- Опційний
env_fileу Compose - CI: приклад GitHub Actions
- Sail vs dev/staging/prod
- Чеклист перед запуском
.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і ретенція відповідають вимогам