Sail: базы данных и Docker-сервисы

Сервисы рядом с laravel.test: SQL, Redis, RabbitMQ, MongoDB, почта и поиск. Дополняет полный гайд по Sail. Команды воркеров — в Очереди и воркеры, .env и серверы — в Окружения и деплой.

Навигация: Все инструменты · Sail обзор · Очереди · Env и деплой · Диагностика

Содержание


Сеть и имена хостов

В .env для PHP из контейнера указывайте имена сервисов Compose (pgsql, redis), не 127.0.0.1. С хоста машины БД доступна как 127.0.0.1:${FORWARD_DB_PORT}.


Redis (полный пример)

redis:
    image: 'redis:alpine'
    ports:
        - '${FORWARD_REDIS_PORT:-6379}:6379'
    volumes:
        - 'sail-redis:/data'
    networks:
        - sail
    healthcheck:
        test: ["CMD", "redis-cli", "ping"]
        retries: 3
        timeout: 5s

Том sail-redis в секции volumes:. У laravel.test: depends_on (при поддержке — condition: service_healthy). .env: REDIS_HOST=redis, REDIS_PORT=6379. Проверка: sail exec redis redis-cli ping.


MySQL → PostgreSQL

Удалите mysql, добавьте pgsql из свежего sail:install --with=pgsql или stub’ов laravel/sail. depends_onpgsql. .env: DB_CONNECTION=pgsql, DB_HOST=pgsql, порт 5432. sail build --no-cache при смене образа. migrate:fresh для чистой dev-БД.


MongoDB и расширение PHP

Сервис mongo, том sail-mongo. Пакет вроде mongodb/laravel-mongodb. В опубликованном Dockerfile runtime: pecl install mongodb + docker-php-ext-enable mongodb, затем sail build --no-cache. Хост из приложения — mongo, порт 27017.


RabbitMQ как sidecar

rabbitmq:
    image: 'rabbitmq:3-management-alpine'
    hostname: rabbitmq
    ports:
        - '${FORWARD_RABBITMQ_PORT:-5672}:5672'
        - '${FORWARD_RABBITMQ_MANAGEMENT:-15672}:15672'
    volumes:
        - 'sail-rabbitmq:/var/lib/rabbitmq'
    networks:
        - sail
    environment:
        RABBITMQ_DEFAULT_USER: '${RABBITMQ_USER:-sail}'
        RABBITMQ_DEFAULT_PASS: '${RABBITMQ_PASSWORD:-password}'

Том sail-rabbitmq. UI на 15672. Переменные для вашего AMQP-пакета очередей.


Mailpit

Настройте SMTP на хост mailpit и порты из compose; письма смотрите в веб-UI проброшенного порта.


Meilisearch / Typesense

php artisan sail:install --with=meilisearch или вставьте блок из stub’ов Sail. SCOUT_DRIVER, MEILISEARCH_HOST — на имя сервиса и внутренний порт.


Healthcheck и порядок старта

depends_on не ждёт готовности БД. Добавьте healthcheck и service_healthy, где поддерживается Compose.


Тома и сброс данных

Именованные тома переживают sail down. sail down -v удаляет данные. Точечно — docker volume rm по имени.


См. также

Sail — полный гайд · Очереди · Окружения и деплой · Диагностика · ← Все инструменты