我刚刚按照他们的文档中的说明创建了一个新的 Laravel 8 项目。使用Laravel Sail我在我的机器上本地运行该站点,使用sail up. 我设置了一个条目/etc/hosts,因此URL我去的是http://local.dev.domain.com(取代domain.com了我自己的实际域名,并指向localhost了在/etc/hosts文件中)......所有的伟大工程。
但是,该站点需要使用 Facebook 登录,而 Facebook 仅在推荐人上需要 https 网址。我已经尝试了所有可以在网上找到的有关mkcert使用 docker设置 SSL 证书的方法,但是使用手动创建的证书(通过)设置 nginx或尝试使用 letencrypt 都因各种原因而失败(端口冲突,letsencrypting 希望域成为一个真正的(和失败,如果我做创建一个子域极致挑战),我复制证书要等/etc/ssl/certs泊坞窗图像和运行中update-ca-certificates,尝试设置应用程序端口443在我的.env文件,以及打开两个端口80,并443在docker-compose.yml文件...但一切都以浏览器拒绝请求而告终https://local.dev.domain.com
我花了几个小时试图让它工作,但似乎没有人使用带有 SSL 的 Laravel Sail docker 镜像。
任何指针?
[编辑以获取更多信息] 正如评论中所指出的,您需要将别名设置为仅使用sail ...,但我已经这样做了:
我也试过不使用 bash 别名vendor/bin/sail share,但无济于事:
根据文档:
此外,当 MySQL 容器启动时,它将确保存在名称与 DB_DATABASE 环境变量的值匹配的数据库。
我的.env文件看起来像这样。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试通过 运行迁移时sail artisan migrate,我得到了这个错误:
SQLSTATE[HY000] [1049] Unknown database 'test' (SQL: select * from information_schema.tables where table_schema = test and table_name = migrations and table_type = 'BASE TABLE')
我试过的:
sail build --no-cache(尝试完全重建一切)sail shell,我进入 MySQL 并显示所有数据库。我可以在那里看到默认的 Laravel 数据库。你怎么告诉sail创建正确的DB_DATABASE?
我的docker-compose.yml:
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: …Run Code Online (Sandbox Code Playgroud) sail shell并且sail artisan命令已停止工作。
但sail up仍在sail down工作。
版本详情
php: 8.0.5
laravel: 8.41.0
sail: 1.5.1
docker: 3.3.3
操作系统: macOS 11.3.1
我的 docker-compose.yml 文件
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
mysql:
image: 'mysql:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个简单的 laravel 项目,并且正在关注 laracast 以使用 Sail 设置该项目。该项目运行良好,我能够使用 vendor/bin/sail artisan migrate 进行迁移。
laracast的下一步是用tableplus连接数据库。但我无法通过这一步。我在 tableplus 中收到此错误:

这是我的 .env:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=csv
DB_USERNAME=root
DB_PASSWORD=
Run Code Online (Sandbox Code Playgroud)
我没有更改 docker-compose 文件中的任何设置,在 docker 桌面中我可以看到 mysql 在端口 3306 上运行并且没有设置密码。
知道如何解决此问题并连接到数据库吗?
编辑:发现问题。当我运行时brew services list,看到旧版本的 mysql 仍在运行。停止它,brew services stop mysql现在我可以连接
我正在尝试使用与 Laravel Sail 集成的 Laravel Dusk,如下所述: https: //laravel.com/docs/8.x/sail#laravel-dusk
在进行这项工作时,我面临一些问题:
如果使用 .env.dusk 或 .env.dusk.local 文件并使用“sail dusk”运行测试,我会收到连接拒绝错误(更多详细信息如下)
例如,如果使用 .env.testing 设置 ENV 变量并运行“sail dusk --env=testing”,则连接拒绝错误会消失,但应用程序会继续使用默认的 .env 文件,而 dusk 测试则使用 .env 文件。 env.testing,导致很多错误。
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
- selenium
selenium:
image: 'selenium/standalone-chrome'
volumes:
- '/dev/shm:/dev/shm'
networks:
- sail
mysql: …Run Code Online (Sandbox Code Playgroud) 我正在使用 Laravel sail。我想使用主管和 cronjob。但我不明白如何用 sail 配置这些东西。
我找不到任何有关如何执行此操作的示例。
我创建了一个新的 Laravel 8 项目,它附带了 Laravel Sail,一个预配置的 Docker 环境。它运行良好,直到我需要使用 PHP 扩展。
Laravel Sail 文档似乎没有提及任何有关 PHP 扩展的内容,这是一个重大问题。任何重要的 PHP 站点都必须使用多个 PHP 扩展。如果没有添加 PHP 扩展的能力,Laravel Sail(或任何其他 PHP 环境)或多或少是无用的。
中有 aDockerfile和 a 。我可以将这些文件从我自己的项目代码中复制出来或复制到我自己的项目代码中,然后破解指向这些文件的我的版本。但是,如果我这样做,我将失去 Laravel Sail 人员对这些文件所做的任何未来修复或改进。php.inivendor/laravel/sail/runtimes/8.0/vendordocker-compose.yml
我知道sail artisan sail:publish他们在 Laravel Sail 文档末尾提到的命令(https://laravel.com/docs/8.x/sail#sail-customization)。它似乎只是做了我上面提到的事情:将第三方代码复制到我的项目中,现在突然这个最终用户网站负责维护自己的 Laravel Sail 副本。
当然有一种惯用的方法可以在 Laravel Sail 中添加 PHP 扩展,而无需在我的站点代码中重新实现 Laravel Sail 的分支?
最近我被分配了一项任务来升级旧的 Laravel 项目,有一个控制器,需要迁移的文件不超过 20 个,平均有 200 行代码。
为此,我安装了 laravel 最新的 8.1 ,但它附带了很多垃圾,包括 sails。我只需要像laravel-5.4(支持php-8)和mysql(没有帆,邮件和其他东西)。
我可以从中删除帆吗?我在 google 第一页上找不到使用最小 laravel 的好文档,所以我来到这里。
我无意冒犯任何人,但我认为 Laravel 因许多糟糕的抽象而变得令人沮丧。
我正在尝试在我的 Ubuntu 20.04.3 LTS 桌面上使用最新版本的 laravel sail 设置 xdebug,
即
PHP 8.1
Laravel 9
.env 文件包含以下提到的详细信息
SAIL_XDEBUG_MODE=develop,debug
SAIL_XDEBUG_CONFIG="client_host=172.23.0.1"
Run Code Online (Sandbox Code Playgroud)
但当我跑步时sail debug migrate,返回
Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: 172.23.0.1:9003 (through xdebug.client_host/xdebug.client_port)
当我尝试查找 IP 时,每次
docker inspect -f {{range.NetworkSettings.Networks}}{{.Gateway}}{{end}} <container-name>
返回不同的 IP(例如 172.25.0.1)时它都会发生变化
laravel-sail ×10
laravel ×9
docker ×5
laravel-8 ×5
php ×3
mysql ×2
cron ×1
laravel-dusk ×1
ssl ×1
supervisord ×1