Sail: бази данни и Docker услуги

Този гайд е за услуги до laravel.test: SQL, Redis, по избор RabbitMQ, MongoDB и удобни за dev екстри. Допълва пълния Sail гайд. Команди за workers — в Опашки; .env и сървъри — в Среди и деплой.

Навигация: Всички инструменти · Sail · Опашки · Env · Диагностика

Съдържание


Мрежа и правила за имена на хостове

Всички хостове от страна на приложението в .env трябва да са имена на Compose услуги (pgsql, redis, mongo), не 127.0.0.1, защото PHP работи вътре в laravel.test. От хост машината достъпът до БД е 127.0.0.1:${FORWARD_DB_PORT}, когато портовете са пробросени.


Redis услуга (пълен пример)

Добавете в docker-compose.yml (нагласете имената към вашия Sail файл):

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:
    redis:
        condition: service_healthy

(Ако Compose няма condition, ползвайте depends_on: [redis].)

.env:

REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

Проверка: sail exec redis redis-cli ping.


Замяна на MySQL с PostgreSQL

  1. Премахнете (или коментирайте) услугата mysql и нейния том.
  2. Добавете pgsql от свеж Sail stub (php artisan sail:install --with=pgsql) или от laravel/sail stubs/pgsql.stub.
  3. Насочете depends_on на laravel.test към pgsql.
  4. .env:
DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
  1. Прекомпилирайте при смяна на PHP образ: sail build --no-cache && sail up -d.
  2. Чиста БД: sail artisan migrate:fresh.

MongoDB и PHP разширение в Sail

1. Услуга в Compose:

mongo:
    image: 'mongo:7'
    ports:
        - '${FORWARD_MONGO_PORT:-27017}:27017'
    volumes:
        - 'sail-mongo:/data/db'
    networks:
        - sail
  1. Добавете sail-mongo към volumes:.

  2. Обикновено mongodb/laravel-mongodb. Разширението mongodb трябва в laravel.test. След sail:publish редактирайте Dockerfile (напр. docker/8.3/Dockerfile):

RUN pecl install mongodb \
    && docker-php-ext-enable mongodb
  1. sail build --no-cache.

  2. Хост mongo, порт 27017 от контейнера на приложението.


RabbitMQ като контейнер

При пакет с AMQP драйвер:

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.


Mailpit (SMTP за dev)

Насочете Laravel към mailpit и SMTP порта от compose; писмата в браузър UI.


Meilisearch / Typesense

sail:install --with=meilisearch или блок от upstream. Scout променливи към име на услуга.


Healthcheck и ред на стартиране

depends_on само не чака готовност на БД. Предпочитайте healthcheck и service_healthy, където Compose го поддържа.


Именовани томове и нулиране на данни

  • Томовете остават след sail down.
  • sail down -v ги изтрива — данните изчезват.
  • За един том: docker volume rm по име от docker volume ls.

Вижте също

← Всички инструменти