我正在尝试 Laravel Sail,因为我已经成功使用 Laradock 几年了,并希望简化我的开发环境设置。我使用的是 Windows 10 64,使用 WSL 2 安装的 Docker Desktop 3.0,我的 Laravel 应用程序运行的是 Laravel 8.20.1。
在我的 Laravel 项目中,我遵循了Laravel Sail 设置指南:我运行了composer require laravel/sail --dev和php artisan sail:install,并且docker-compose.yml在我的根目录中看到了。
但是当我运行时,./vendor/bin/sail up我收到此错误:
./vendor/bin/sail: line 1: XSym: command not found
./vendor/bin/sail: line 2: 0024: command not found
./vendor/bin/sail: line 3: a81960381c7144e16cd1e768af147de3: command not found
./vendor/bin/sail: line 4: ../laravel/sail/bin/sail: No such file or directory
Run Code Online (Sandbox Code Playgroud)
更新:我通过 Qumber 的帮助修复了上述问题:删除 /vendor/ 并重新安装。但现在我收到这个错误:
在 GitBash 中,我得到了这样的回应:
Unsupported …
我正在使用sail 并尝试以root 身份使用shell,这是不可能的。切换到 root 用户要求输入密码,我不知道。
我尝试更改 dockerfile:
ARG WWWROOTGROUP
RUN groupadd --force -g $WWWROOTGROUP sailRoot
RUN useradd -ms /bin/bash --no-user-group -g $WWWROOTGROUP -u 1337 sailRoot
RUN usermod -aG sudo sail
RUN usermod -aG sudo sailRoot
Run Code Online (Sandbox Code Playgroud)
我试图添加一个新用户并给他和标准的sail 用户root 权限,但它不起作用。容器内没有sailRoot 用户。当然,我用那个 dockerfile 重建容器。据我所知,更改后的 dockerfile 已正确执行。
有人知道如何使用sail将用户更改为root吗?
我想要做的是将 imagemagick 安装到容器中。我已经在 dockerfile 中添加了“apt-get install imagemagick imagemagick-doc”,但它没有安装在容器内。如果你知道怎么做,我真的很感激!
谢谢。
我刚刚用 laravel 风帆建立了一个 laravel 项目,由于某种原因,在构建过程中它没有创建给定的数据库和用户。我很困惑为什么,因为我觉得我已经配置好了一切。
执行时,./vendor/bin/sail artisan migrate我收到以下错误,表明我的 .env 中给出的用户不存在或凭据错误:
Illuminate\Database\QueryException
SQLSTATE[HY000] [1045] Access denied for user 'Laravel'@'192.168.0.5' (using password: YES)
(SQL: select * from information_schema.tables where table_schema = shop and table_name = migrations and table_type = 'BASE TABLE')
Run Code Online (Sandbox Code Playgroud)
以 root 用户身份检查我的数据库表明它确实没有Laravel配置用户:
mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个 Laravel Sail 环境,我正在尝试使用 puppeteer 将网页保存为 pdf。
我目前正在使用这个包通过 laravel 运行 puppeteer - https://packagist.org/packages/spatie/browsershot
要求部分指定您需要通过 npm 下载 puppeteer。
Laravel Sail 有 npm 设置,所以我已经安装了 puppeteer 包,但是当我尝试将网页保存为屏幕截图时,我收到以下错误
The command "PATH=$PATH:/usr/local/bin NODE_PATH=`npm root -g` node '/var/www/html/vendor/spatie/browsershot/src/../bin/browser.js' '{"url":"https:\/\/google.com","action":"screenshot","options":{"type":"png","path":"\/var\/www\/html\/storage\/app\/public\/screenshot.png","args":[],"viewport":{"width":800,"height":600}}}'" failed. Exit Code: 1(General error) Working directory: /var/www/html/public Output: ================ Error Output: ================ Error: Could not find expected browser (chrome) locally. Run `npm install` to download the correct Chromium revision (856583). at ChromeLauncher.launch (/var/www/html/node_modules/puppeteer/lib/cjs/puppeteer/node/Launcher.js:80:27) at async callChrome (/var/www/html/vendor/spatie/browsershot/bin/browser.js:69:23)
Run Code Online (Sandbox Code Playgroud)
它基本上是说它找不到我的本地版本的 Chromium,我不知道如何解决这个问题,如果它不是通过 docker 运行的,我可以在本地安装它并指向它,但我不认为这是使用 docker 时的最佳解决方案。
我有一个带有 Sail 的 Laravel,我想用 Laravel Dusk 进行自动化测试。我按照Dusk Documentation和Sail + Dusk Installation中的所有说明进行操作,但是当我运行默认测试时,我收到以下错误消息:
Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"args":["--disable-gpu","--headless","--no-sandbox","--window-size=1920,1080"]},"acceptInsecureCerts":true}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"args":["--disable-gpu","--headless","--no-sandbox","--window-size=1920,1080"]},"acceptInsecureCerts":true}}
Failed to connect to localhost port 4444: Connection refused
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:333
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:136
/var/www/html/tests/DuskTestCase.php:69
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:218
/var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php:234
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:219
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:97
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:65
/var/www/html/tests/Browser/ExampleTest.php:21
Run Code Online (Sandbox Code Playgroud)
但如果在 Insomnia 中执行请求,它运行不会出现任何问题:
这是我的 docker-compose:
# 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: …Run Code Online (Sandbox Code Playgroud) 我正在学习 Laravel 8,我想使用 Laravel Sail 设置一个快速开发环境。
由于我们通常不会提交到 Git 中的供应商目录,我们如何从一个新的 Git 克隆运行 Sail?没有它我们就不能使用“composer install”。这是否意味着我们应该提交 vendor/bin 和 vendor/composer 文件夹?有哪些常见的做法?
我们是否应该将 /vendor/bin 提交到 git 以获得开箱即用的新开发环境?
自 6 月起,我尝试在数据库中使用 TablePlus(或 PhpStorm)连接并创建架构。请理解我应该做什么?我将逐步描述我做了什么。
$ laravel new app。我的新项目有 /app/ 文件夹。cd app/进入该文件夹。composer require laravel/sail --dev接收 Laravel Sail。php artisan sail:install。终端询问我想安装哪些服务?。我编写mysql并按 Enter 键。gedit .env打开 .env 文件以查看连接设置。APP_ENV=local
APP_KEY=base64:fXZ06W8BPoRShk8cYlHgS0u/+IBIZTSOM20gFRON6d4=
APP_DEBUG=true
APP_URL=http://app.test
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=app
DB_USERNAME=sail
DB_PASSWORD=password
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=memcached
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Run Code Online (Sandbox Code Playgroud)
gedit docker-compose.yml在这里查看这些设置。# …Run Code Online (Sandbox Code Playgroud) 经过几个小时的尝试后,我想我太困惑了,无法理解出了什么问题......标题完美地解释了我正在努力实现的目标。\n我的docker-compose.yml:
version: \'3\'\nservices:\n mysite.test:\n build:\n context: ./docker/8.1\n dockerfile: Dockerfile\n args:\n WWWGROUP: \'${WWWGROUP}\'\n image: sail-8.1/app\n extra_hosts:\n - \'host.docker.internal:host-gateway\'\n ports:\n - \'${APP_PORT:-80}:80\'\n - \'443:443\' //added for test but not working...\n - \'${HMR_PORT:-8080}:8080\'\n - \'5173:5173\' //Vite port\n environment:\n WWWUSER: \'${WWWUSER}\'\n LARAVEL_SAIL: 1\n XDEBUG_MODE: \'${SAIL_XDEBUG_MODE:-off}\'\n XDEBUG_CONFIG: \'${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}\'\n volumes:\n - \'.:/var/www/html\'\n networks:\n - sail\n depends_on:\n - mysql\n - minio\n mysql:\n image: \'mysql/mysql-server:8.0\'\n ports:\n - \'${FORWARD_DB_PORT:-3306}:3306\'\n environment:\n MYSQL_ROOT_PASSWORD: \'${DB_PASSWORD}\'\n MYSQL_ROOT_HOST: "%"\n MYSQL_DATABASE: \'${DB_DATABASE}\'\n MYSQL_USER: \'${DB_USERNAME}\'\n MYSQL_PASSWORD: \'${DB_PASSWORD}\'\n MYSQL_ALLOW_EMPTY_PASSWORD: 1\n volumes:\n - \'sail-mysql:/var/lib/mysql\'\n - …Run Code Online (Sandbox Code Playgroud) 我使用的是Ubuntu 22.04以及最新版本的Docker Desktop (4.11.1)和Laravel Framework 9.26.1。
我尝试按照https://laravel.com/docs/9.x#getting-started-on-linux中列出的步骤创建一个新的 Laravel 项目。
当我运行时,./vendor/bin/sail up终端没有显示任何错误。但是当我尝试访问 http://localhost/ Laravel 时显示此UnexpectedValueException:
The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file "/var/www/html/storage/logs/laravel.log" …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 Mac 让 Docker/LaravelSail 运行。启动 Docker 时出现错误
Attaching to flow-laravel.test-1, flow-mysql-1 Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 0.0.0.0:0: listen tcp 0.0.0.0:80: bind: address already in use
我知道 80 端口正在其他地方使用,但我很难解决这个问题。当我运行时,docker ps我得到正在运行的 mySql 容器 ID。
我尝试手动停止和启动 laravel-test1 容器,但没有成功。
我的问题是,我该如何解决这个问题?
laravel-sail ×10
laravel ×6
docker ×5
php ×2
git ×1
https ×1
laravel-8 ×1
laravel-dusk ×1
mysql ×1
puppeteer ×1
selenium ×1
table-plus ×1
vite ×1