Reputation: 450
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
Upvotes: 6
Views: 5177
Reputation: 9381
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.
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.
C:\Windows\System32\Drivers\etc\hosts
/etc/hosts
/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.
Upvotes: 2
Reputation: 58
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
Upvotes: 1
Reputation: 113
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
Upvotes: 1
Reputation: 2643
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
Upvotes: 1