no such service: laravel.test
Asked Answered
R

5

6

I'm a Dockers / Sail beginner and wanted to give it a try with a new Laravel project.

So, when I execute a Laravel fresh install, and i run sail up i get this error:

no such service: laravel.test

However, http://localhost returns the expected result.

But http://laravel.test doesn't return anything.

Just updated PHP, Laravel and Dockers - so they are running on the latest versions.

Do you know how can I fix this?

EDIT: Added the whole docker-compose.yml file

version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
    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'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s   
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            - mysql:mysql
        ports:
            - 8080:80
        environment:
            MYSQL_USERNAME: "${DB_USERNAME}"
            MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
            PMA_HOST: mysql    
        networks:
            - sail
networks:
    sail:
        driver: bridge
volumes:
    sail-mysql:
        driver: local
Ramiroramjet answered 6/3, 2022 at 19:12 Comment(2)
The reason laravel.test as a domain does not work, is because sail does not create a domain for you. If you want this to work, you need to add it to your hosts file. About the sail up: it should exist in your docker-compose file, did you chanhe the name of your service?Specs
Thanks @onlineThomas - i will look into host files and come back with an update. And yes, in docker-compose.yml i have laravel.tests as a service (I edited the question so that it contains the whole docker-compose.yml file).Ramiroramjet
S
2

the name

The name laravel.test for this service is poorly chosen. All the other services give a more proper clue as to what service is running in the container. In the case of laravel.test, there runs a php built-in web server, which is kept running by a supervisor. A better name would be php_webserver for example.

not being able to access laravel.test

Domains are bought (although it's more like renting) from a domain registrar. However the tld .test is reserved for testing and can't be bought. The most common way to create a fake domain for testing is by modifying your hosts file.

  • Windows: C:\Windows\System32\Drivers\etc\hosts
  • Mac: /etc/hosts
  • Linux: /etc/hosts

This file requires admin access, so you need to start your text editor as admin to make changes. Here you can make a newline entry with the content

127.0.0.1 laravel.test

This will make your OS check for localhost when trying to access laravel.test.

You can of course keep using 127.0.0.1 to check your site like always.

Specs answered 30/5, 2022 at 10:22 Comment(0)
E
1

You should first add it to your project:

composer require laravel/sail --dev

after that, instal sail:

php artisan sail:install

then:

./vendor/bin/sail up // or sail up
Encipher answered 6/3, 2022 at 19:41 Comment(1)
Sail is installed, because all docker containers are running on sail up - but only http://localhost delivers the website content. Also, documentation clearly states: Laravel Sail is automatically installed with all new Laravel applications so you may start using it immediately laravel.com/docs/9.x/sail#installationRamiroramjet
M
1

I have fixed this issue by adding

172.19.0.1      laravel.test

in host file on my pc. i am using liunx mint

sudo nano /etc/hosts
Miniaturize answered 26/5, 2022 at 5:19 Comment(0)
P
1

It's probably because of laravel.test domain not registered in your system so if you use Linux use @Saravana Sai's answer

but if you use windows the host file exists in

C:\Windows\System32\Drivers\etc\hosts

note: you need administrative privileges to edit this file

Phia answered 29/5, 2022 at 3:27 Comment(0)
T
0

I removed my old docker-compose.yml and it worked

Tabb answered 24/4, 2024 at 16:19 Comment(1)
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.Harter

© 2022 - 2025 — McMap. All rights reserved.