php 无法为Laravel Sail在.env上设置APP_PORT

du7egjpx  于 2023-04-19  发布在  PHP
关注(0)|答案(6)|浏览(149)

我在Windows 10中遇到以下问题(在Ubuntu中正常工作):
我在Laravel 8中使用Sail当我在.env上创建APP_PORT变量时...

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
APP_PORT=3000

...并使用sail up启动Web,我得到以下错误:

services.laravel.test.ports contains an invalid type, it should be a number, or an object

这就是docker-compose.yml的外观

version: '3'
    services:
        laravel.test:
            build:
                context: ./docker/8.0
                dockerfile: Dockerfile
                args:
                    WWWGROUP: '${WWWGROUP}'
            image: sail-8.0/app
            ports:
                - '${APP_PORT:-80}:80'
...

我知道我可以只放ports: - '3000:80',但因为我在团队中工作,php artisan sail:install命令将覆盖docker-compose.yml文件,所以我不想更改docker-compose.yml文件。
先谢谢你了。

wydwbb8l

wydwbb8l1#

航行

sudo APP_PORT=3001 ./vendor/bin/sail up

这是我做的唯一方法。我仍然不知道为什么其他配置不允许它在。env中

d7v8vwbk

d7v8vwbk2#

不需要更改docker-compose.yml文件,只需在.env文件中添加一行即可:
1.在.env文件中添加一行
APP_PORT=3001 //or instead of 3001 any other port number of your choice
1.重新开始航行
sail up
1.现在,您应该能够使用在步骤1中设置的端口号访问应用程序
http://localhost:3001

pinkon5k

pinkon5k3#

Laravel Sail(Docker)在Windows 10上的解决方案是将.env EOL从CRLF更改为LF。我发现它是因为我试图解决另一个问题的警告:

./.env: line X: $'\r': command not found
/usr/bin/env: bash: No such file or directory

在我解决了EOL冲突后,sail up命令能够读取所有环境变量。我还在以下文件中将EOL更改为LR:

.env
artisan
docker/7.4/start-container
docker/8.0/start-container
vendor/laravel/sail/runtimes/8.0/start-container
vendor/laravel/sail/runtimes/7.4/start-container

很明显为什么这个问题在Ubuntu上没有出现。

mpgws1up

mpgws1up4#

添加到您的.env:

SERVER_PORT=3001
prdp8dxp

prdp8dxp5#

下面是您必须在.env文件中设置/更改的端口(如果其中任何一个已经被占用):

APP_PORT=8011
FORWARD_DB_PORT=3307
FORWARD_REDIS_PORT=6380
FORWARD_MEILISEARCH_PORT=7701
FORWARD_MAILHOG_PORT=1026
FORWARD_MAILHOG_DASHBOARD_PORT=8026
VITE_PORT=5174
gcxthw6b

gcxthw6b6#

你也应该检查这个文件:
vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php
并更改默认端口,所以当你输入cmd php artisan serve时,它实际上改变了端口。
使用php artisan serve --host=0.0.0.0 --port=8080进行绑定,只需要一次即可。

相关问题