我是 Dockers / Sail 初学者,想尝试一个新的 Laravel 项目。
所以,当我执行 Laravel 全新安装并运行
sail up
时,我收到此错误:
no such service: laravel.test
但是,
http://localhost
返回预期结果。
但是
http://laravel.test
不会返回任何内容。
刚刚更新了 PHP、Laravel 和 Docker - 因此它们在最新版本上运行。
你知道我该如何解决这个问题吗?
编辑:添加了整个 docker-compose.yml 文件
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
此服务的名称
laravel.test
选得不好。所有其他服务都提供了关于容器中正在运行哪些服务的更正确的线索。
在 laravel.test
的情况下,运行一个 php 内置 Web 服务器,该服务器由主管运行。例如,更好的名称是 php_webserver
。
域名是从域名注册商那里购买的(尽管这更像是租用)。然而,tld
.test
保留用于测试,无法购买。创建假域名进行测试的最常见方法是修改您的 hosts
文件。
C:\Windows\System32\Drivers\etc\hosts
/etc/hosts
/etc/hosts
此文件需要管理员访问权限,因此您需要以管理员身份启动文本编辑器才能进行更改。在这里您可以使用内容进行换行
127.0.0.1 laravel.test
这将使您的操作系统在尝试访问时检查本地主机
laravel.test
。
您当然可以像往常一样继续使用 127.0.0.1 检查您的网站。
您应该首先将其添加到您的项目中:
composer require laravel/sail --dev
之后,安装sail:
php artisan sail:install
然后:
./vendor/bin/sail up // or sail up
我已经通过添加解决了这个问题
172.19.0.1 laravel.test
在我电脑上的主机文件中。我正在使用 liunx mint
sudo nano /etc/hosts
这可能是因为 laravel.test 域名没有在您的系统中注册 所以如果你使用 Linux,请使用 @Saravana Sai 的 答案
但是如果您使用 Windows,则主机文件存在于
C:\Windows\System32\Drivers\etc\hosts
注意:您需要管理权限才能编辑此文件
我删除了旧的 docker-compose.yml 并且它起作用了