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

Posted

技术标签:

【中文标题】无法在 .env 上为 Laravel Sail 设置 APP_PORT【英文标题】:Unable to set the APP_PORT on .env for Laravel Sail 【发布时间】:2021-07-07 05:49:58 【问题描述】:

我在 Windows 10 中遇到以下问题(在 Ubuntu 中可以正常工作):

我正在使用 Sail 在 Laravel 8 中工作 当我在.env 上创建APP_PORT 变量时...

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

...并使用sail up 启动网络我收到此错误:

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 文件。

提前致谢。

【问题讨论】:

$APP_PORT:-80:80 这里 $APP_PORT:-80 这是容器端口,它将是 8000,因为 php artisan serve 在该端口上运行,80 是你的本地机器端口我想你想改变你的本地机器端口? 感谢您的评论。实际上,我的 Laravel Sail 在端口 80 上提供服务,我知道默认情况下工匠服务是 8000,但 80 端口是“起航”给我的端口。我想更改我的主机端口(在左侧)我不在乎容器端口 使用- '$APP_PORT:-80:$APP_CLIENT_PORT'并在.env中创建一个新的就像APP_CLIENT_PORT=3000一样 client 表示将消耗你的端口docker(HOST)你的机器是客户端 嗨,我有相同的配置并且没有更改 docker.yml 文件,只是将 APP_PORT 添加到 .env 并运行sails up 命令,现在我看到应用程序在 localhost:8000 上运行时访问通过浏览器。 【参考方案1】:

Windows 10 上 Laravel Sail (Docker) 的解决方案是将 .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 上不存在。

【讨论】:

【参考方案2】:

无需更改 docker-compose.yml 文件,只需在 .env 文件中添加一行即可:

    在您的 .env 文件中添加一行

    APP_PORT=3001 //or instead of 3001 any other port number of your choice

    重启帆

    sail up

    现在您应该可以使用您在步骤 1 中设置的端口号访问您的应用程序

    http://localhost:3001

【讨论】:

【参考方案3】:

扬帆出海

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

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

【讨论】:

看看我的回答也许我会帮助你

以上是关于无法在 .env 上为 Laravel Sail 设置 APP_PORT的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Sail 数据库和用户未创建

Laravel Sail 重建默认数据库

Laravel Sail 在 Ubuntu 20.04 LTS 中无法正常工作

Windows 10 (WSL2) 上不支持的操作系统 Laravel 8 with Sail

Laravel Sail 不会在 Ubuntu 20.04 上构建 - groupadd:无效的组 ID 'sail'

我无法使用 Sequel Pro 连接到我的 Sail PHPMyAdmin