Как можно исправить ошибку, при которой сервис «laravel.test» не запущен?

Почему возникает ошибка "service 'laravel.test' is not running" при выполнении команд, таких как `<br/> sail test <br/>` и `<br/> sail artisan <br/>`?<br/><br/> В приложении используется следующий файл docker-compose.yml:<br/><pre><code>services:
    php:
        build:
            context: ./vendor/laravel/sail/runtimes/8.3
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.3/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
            IGNITION_LOCAL_SITES_PATH: '${PWD}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
#            - typesense
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: '%'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sail-mysql:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test:
                - C…
  • 5 ноября 2024 г. 10:33
Ответы на вопрос 2
Ошибка "service 'laravel.test' is not running" может возникать по нескольким причинам. Для диагностики и исправления этой проблемы, вы можете пройти следующие шаги:

1. **Проверьте статус сервисов**: Выполните команду `./vendor/bin/sail ps` (или просто `sail ps` если ваш Docker настроен так, что не требует префикса), чтобы убедиться, что все сервисы запущены. Вы должны увидеть список активных сервисов. Если сервис `laravel.test` (или просто `php`, если вы используете настройки по умолчанию) не запущен, это может быть причиной ошибки.

2. **Запустите сервисы**: Если сервис не запущен, вы можете запустить его с помощью команды:
   ```bash
   ./vendor/bin/sail up
   ```
   Эта команда запустит все сервисы, определенные в вашем `docker-compose.yml`.

3. **Проверьте Docker**: Убедитесь, что Docker работает корректно и не имеет сбоев (например, проверьте наличие достаточного объема ресурсов на вашей машине). Вы можете проверить статус Docker через панель управления Docker или команды в терминале, такие как `docker info`.

4. **Проверьте логи**: Если сервис не запускается, полезно посмотреть логи. Выполните команду:
   ```bash
   ./vendor/bin/sail logs
   ```
   Это покажет логи всех сервисов и может дать подсказки о том, почему именно сервисы не запускаются.

5. **Проверка конфигурации**: Проверьте ваш файл `docker-compose.yml` на наличие ошибок. Убедитесь, что все необходимые переменные окружения заданы корректно и сервисы зависят друг от друга корректно.

6. **Зависимости и порядок запуска**: Убедитесь, что все зависимости вашего сервиса запущены и готовы к работе. Например, `php` (или `laravel.test`) зависит от `mysql` и `redis`. Попробуйте проверить их состояние прежде чем прыгнуть к `php`.

7. **Пересобрать контейнеры**: Иногда, если вы внесли изменения в `docker-compose.yml` или другие файлы, вы можете захотеть пересобрать ваши контейнеры. Запустите:
   ```bash
   ./vendor/bin/sail build
   ```

8. **Обновление и очистка**: Если все указанные выше методы не помогли, попробуйте обновить Sail и очистить старые контейнеры. Используйте команду:
   ```bash
   ./vendor/bin/sail down
   ./vendor/bin/sail up --build
   ```

Следование этим шагам должно помочь выявить и исправить проблему с неработающим сервисом `laravel.test`.
Контейнер не запущен, поэтому выполнять ваши команды некому. 
Выполняем, и убеждаемся, что ошибок нет и все стартануло
sail up
поднимет контейнеры, но если выйти из терминала, или нажать ctrl+c, то они сразу потухнут, поэтому

sail up -d
Это запустит контейнеры и "открепит" их от текущей сессии, чтобы они выполнялись в фоне.
Теперь терминал освободился, и можно обращаться к другим командам.

Стоит отметить, что sail это всего лишь CLI обертка для docker, которая позволяет стартовать контейнеры и быстро исполнять команды в них.
Пример:
sail up = docker compose up
sail artisan [..] = docker exec -it %имя_контейнера% php artisan [...]

Поэтому можно сразу читать мануал к докеру
Похожие вопросы