sail up -d – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Fri, 15 May 2026 14:28:59 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 执行命令:sail artisan migrate 时,报错:In Filesystem.php line 207: chmod(): Operation not permitted https://www.shuijingwanwq.com/2022/01/04/5671/ https://www.shuijingwanwq.com/2022/01/04/5671/#respond Tue, 04 Jan 2022 01:50:50 +0000 https://www.shuijingwanwq.com/?p=5671 浏览量: 126 1、执行命令:sail artisan migrate 时,报错:chmod(): Operation not permitted。如图1
执行命令:sail artisan migrate 时,报错:chmod(): Operation not permitted。

图1



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ sail artisan migrate

In Filesystem.php line 207:

  chmod(): Operation not permitted


wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$


2、运行以下命令进行重新加载文件:sail composer dump-autoload,报错:In Filesystem.php line 207: chmod(): Operation not permitted。Script @php artisan package:discover –ansi handling the post-autoload-dump event returned with error code 1。如图2
运行以下命令进行重新加载文件:sail composer dump-autoload,报错:In Filesystem.php line 207:  chmod(): Operation not permitted。Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1。

图2



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ sail composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

In Filesystem.php line 207:

  chmod(): Operation not permitted


Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$


3、通过 sail up -d 重新启动 Sail。如图3
通过 sail up -d 重新启动 Sail。

图3



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ sail up
[+] Running 6/6
 ⠿ Container weibo_meilisearch_1   Running                                                                         0.0s
 ⠿ Container weibo_redis_1         Running                                                                         0.0s
 ⠿ Container weibo_mailhog_1       Running                                                                         0.0s
 ⠿ Container weibo_selenium_1      Running                                                                         0.0s
 ⠿ Container weibo_mysql_1         Running                                                                         0.0s
 ⠿ Container weibo_laravel.test_1  Recreated                                                                      10.8s
Attaching to laravel.test_1, mailhog_1, meilisearch_1, mysql_1, redis_1, selenium_1
laravel.test_1  | 2021-12-27 01:47:52,236 INFO Set uid to user 0 succeeded
laravel.test_1  | 2021-12-27 01:47:52,240 INFO supervisord started with pid 17
laravel.test_1  | 2021-12-27 01:47:53,246 INFO spawned: 'php' with pid 18
laravel.test_1  | 2021-12-27 01:47:54,250 INFO success: php entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
laravel.test_1  | Starting Laravel development server: http://0.0.0.0:80
laravel.test_1  | [Mon Dec 27 01:47:57 2021] PHP 8.1.0 Development Server (http://0.0.0.0:80) started
meilisearch_1   | [2021-12-27T01:48:07Z INFO  actix_web::middleware::logger] 127.0.0.1:34400 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000048
mailhog_1       | [APIv1] KEEPALIVE /api/v1/events
meilisearch_1   | [2021-12-27T01:48:37Z INFO  actix_web::middleware::logger] 127.0.0.1:34404 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000344
meilisearch_1   | [2021-12-27T01:49:08Z INFO  actix_web::middleware::logger] 127.0.0.1:34408 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000050
mailhog_1       | [APIv1] KEEPALIVE /api/v1/events
meilisearch_1   | [2021-12-27T01:49:38Z INFO  actix_web::middleware::logger] 127.0.0.1:34412 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000054
meilisearch_1   | [2021-12-27T01:50:08Z INFO  actix_web::middleware::logger] 127.0.0.1:34418 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000053
mailhog_1       | [APIv1] KEEPALIVE /api/v1/events
meilisearch_1   | [2021-12-27T01:50:38Z INFO  actix_web::middleware::logger] 127.0.0.1:34422 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000048
meilisearch_1   | [2021-12-27T01:51:08Z INFO  actix_web::middleware::logger] 127.0.0.1:34424 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000050
mailhog_1       | [APIv1] KEEPALIVE /api/v1/events
meilisearch_1   | [2021-12-27T01:51:39Z INFO  actix_web::middleware::logger] 127.0.0.1:34428 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000063
meilisearch_1   | [2021-12-27T01:52:09Z INFO  actix_web::middleware::logger] 127.0.0.1:34434 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000052
mailhog_1       | [APIv1] KEEPALIVE /api/v1/events
meilisearch_1   | [2021-12-27T01:52:39Z INFO  actix_web::middleware::logger] 127.0.0.1:34438 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000119
meilisearch_1   | [2021-12-27T01:53:09Z INFO  actix_web::middleware::logger] 127.0.0.1:34442 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000048
mailhog_1       | [APIv1] KEEPALIVE /api/v1/events
meilisearch_1   | [2021-12-27T01:53:39Z INFO  actix_web::middleware::logger] 127.0.0.1:34446 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000054
^CGracefully stopping... (press Ctrl+C again to force)
[+] Running 6/6
 ⠿ Container weibo_laravel.test_1  Stopped                                                                        10.7s
 ⠿ Container weibo_mailhog_1       Stopped                                                                         0.8s
 ⠿ Container weibo_redis_1         Stopped                                                                         0.8s
 ⠿ Container weibo_selenium_1      Stopped                                                                         4.7s
 ⠿ Container weibo_mysql_1         Stopped                                                                         1.4s
 ⠿ Container weibo_meilisearch_1   Stopped                                                                         0.7s
canceled
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ sail up -d
[+] Running 6/6
 ⠿ Container weibo_mysql_1         Started                                                                         4.3s
 ⠿ Container weibo_selenium_1      Started                                                                         3.3s
 ⠿ Container weibo_meilisearch_1   Started                                                                         3.8s
 ⠿ Container weibo_redis_1         Started                                                                         2.9s
 ⠿ Container weibo_laravel.test_1  Started                                                                         6.5s
 ⠿ Container weibo_mailhog_1       Started                                                                         3.6s
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$


4、再次执行命令:sail artisan migrate 时,不再报错。如图4
再次执行命令:sail artisan migrate 时,不再报错。

图4



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ sail artisan migrate
Migrating: 2021_12_27_013012_create_statuses_table
Migrated:  2021_12_27_013012_create_statuses_table (199.83ms)
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$


]]>
https://www.shuijingwanwq.com/2022/01/04/5671/feed/ 0
在 Windows 10 专业版中创建 weibo 应用,基于 Laravel Sail 开发环境 https://www.shuijingwanwq.com/2021/12/24/5588/ https://www.shuijingwanwq.com/2021/12/24/5588/#respond Fri, 24 Dec 2021 01:25:36 +0000 https://www.shuijingwanwq.com/?p=5588 浏览量: 96 1、使用 Composer 创建一个名为 weibo 的应用。打开 Windows Terminal 命令行,按照以下指示进入 Ubuntu 系统。如图1
使用 Composer 创建一个名为 weibo 的应用。打开 Windows Terminal 命令行,按照以下指示进入 Ubuntu 系统。

图1

2、Ubuntu 作为 Windows 子系统,可以访问到主系统下的硬盘。为了方便管理代码,我在 E 盘下早已创建了 wwwroot 目录,进入此目录后,使用以下命令进行创建一个测试的 Laravel 项目,名称:weibo。如图2
Ubuntu 作为 Windows 子系统,可以访问到主系统下的硬盘。为了方便管理代码,我在 E 盘下早已创建了 wwwroot 目录,进入此目录后,使用以下命令进行创建一个测试的 Laravel 项目,名称:weibo。

图2



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot$ curl -s https://laravel.build/weibo | bash

 _                               _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|

Warning: TTY mode requires /dev/tty to be read/writable.
    Creating a "laravel/laravel" project at "./weibo"
    Installing laravel/laravel (v8.6.9)
      - Downloading laravel/laravel (v8.6.9)
      - Installing laravel/laravel (v8.6.9): Extracting archive
    Created project in /opt/weibo
    > @php -r "file_exists('.env') || copy('.env.example', '.env');"
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 110 installs, 0 updates, 0 removals
      - Locking asm89/stack-cors (v2.0.3)
  - Locking brick/math (0.9.3)
      - Locking dflydev/dot-access-data (v3.0.1)
  - Locking doctrine/inflector (2.0.4)
      - Locking doctrine/instantiator (1.4.0)
  - Locking doctrine/lexer (1.2.1)
  - Locking dragonmantank/cron-expression (v3.1.0)
  - Locking egulias/email-validator (2.1.25)
      - Locking facade/flare-client-php (1.9.1)
      - Locking facade/ignition (2.17.2)
      - Locking facade/ignition-contracts (1.0.2)
  - Locking fakerphp/faker (v1.17.0)
  - Locking filp/whoops (2.14.4)
      - Locking fruitcake/laravel-cors (v2.0.4)
  - Locking graham-campbell/result-type (v1.0.4)
  - Locking guzzlehttp/guzzle (7.4.1)
  - Locking guzzlehttp/promises (1.5.1)
  - Locking guzzlehttp/psr7 (2.1.0)
      - Locking hamcrest/hamcrest-php (v2.0.1)
      - Locking laravel/framework (v8.76.2)
      - Locking laravel/sail (v1.12.12)
      - Locking laravel/sanctum (v2.13.0)
  - Locking laravel/serializable-closure (v1.0.5)
  - Locking laravel/tinker (v2.6.3)
      - Locking league/commonmark (2.1.0)
      - Locking league/config (v1.1.1)
      - Locking league/flysystem (1.1.9)
  - Locking league/mime-type-detection (1.9.0)
  - Locking mockery/mockery (1.4.4)
  - Locking monolog/monolog (2.3.5)
  - Locking myclabs/deep-copy (1.10.2)
      - Locking nesbot/carbon (2.55.2)
  - Locking nette/schema (v1.2.2)
      - Locking nette/utils (v3.2.6)
  - Locking nikic/php-parser (v4.13.2)
      - Locking nunomaduro/collision (v5.10.0)
  - Locking opis/closure (3.6.2)
      - Locking phar-io/manifest (2.0.3)
      - Locking phar-io/version (3.1.0)
      - Locking phpdocumentor/reflection-common (2.2.0)
      - Locking phpdocumentor/reflection-docblock (5.3.0)
      - Locking phpdocumentor/type-resolver (1.5.1)
      - Locking phpoption/phpoption (1.8.1)
      - Locking phpspec/prophecy (v1.15.0)
      - Locking phpunit/php-code-coverage (9.2.10)
      - Locking phpunit/php-file-iterator (3.0.6)
      - Locking phpunit/php-invoker (3.1.1)
      - Locking phpunit/php-text-template (2.0.4)
  - Locking phpunit/php-timer (5.0.3)
  - Locking phpunit/phpunit (9.5.10)
      - Locking psr/container (1.1.2)
      - Locking psr/event-dispatcher (1.0.0)
  - Locking psr/http-client (1.0.1)
  - Locking psr/http-factory (1.0.1)
  - Locking psr/http-message (1.0.1)
  - Locking psr/log (2.0.0)
      - Locking psr/simple-cache (1.0.1)
      - Locking psy/psysh (v0.10.12)
      - Locking ralouphie/getallheaders (3.0.3)
  - Locking ramsey/collection (1.2.2)
  - Locking ramsey/uuid (4.2.3)
      - Locking sebastian/cli-parser (1.0.1)
  - Locking sebastian/code-unit (1.0.8)
      - Locking sebastian/code-unit-reverse-lookup (2.0.3)
      - Locking sebastian/comparator (4.0.6)
  - Locking sebastian/complexity (2.0.2)
  - Locking sebastian/diff (4.0.4)
      - Locking sebastian/environment (5.1.3)
      - Locking sebastian/exporter (4.0.4)
      - Locking sebastian/global-state (5.0.3)
      - Locking sebastian/lines-of-code (1.0.3)
      - Locking sebastian/object-enumerator (4.0.4)
      - Locking sebastian/object-reflector (2.0.4)
      - Locking sebastian/recursion-context (4.0.4)
      - Locking sebastian/resource-operations (3.0.3)
      - Locking sebastian/type (2.3.4)
      - Locking sebastian/version (3.0.2)
      - Locking swiftmailer/swiftmailer (v6.3.0)
      - Locking symfony/console (v5.4.1)
      - Locking symfony/css-selector (v6.0.1)
  - Locking symfony/deprecation-contracts (v3.0.0)
      - Locking symfony/error-handler (v5.4.1)
      - Locking symfony/event-dispatcher (v6.0.1)
  - Locking symfony/event-dispatcher-contracts (v3.0.0)
      - Locking symfony/finder (v5.4.0)
      - Locking symfony/http-foundation (v5.4.1)
      - Locking symfony/http-kernel (v5.4.1)
      - Locking symfony/mime (v5.4.0)
      - Locking symfony/polyfill-ctype (v1.23.0)
      - Locking symfony/polyfill-iconv (v1.23.0)
      - Locking symfony/polyfill-intl-grapheme (v1.23.1)
      - Locking symfony/polyfill-intl-idn (v1.23.0)
      - Locking symfony/polyfill-intl-normalizer (v1.23.0)
      - Locking symfony/polyfill-mbstring (v1.23.1)
      - Locking symfony/polyfill-php72 (v1.23.0)
      - Locking symfony/polyfill-php73 (v1.23.0)
  - Locking symfony/polyfill-php80 (v1.23.1)
      - Locking symfony/polyfill-php81 (v1.23.0)
  - Locking symfony/process (v5.4.0)
      - Locking symfony/routing (v5.4.0)
      - Locking symfony/service-contracts (v2.4.1)
      - Locking symfony/string (v6.0.1)
      - Locking symfony/translation (v6.0.1)
      - Locking symfony/translation-contracts (v3.0.0)
      - Locking symfony/var-dumper (v5.4.1)
      - Locking theseer/tokenizer (1.2.1)
      - Locking tijsverkoyen/css-to-inline-styles (2.2.4)
  - Locking vlucas/phpdotenv (v5.4.1)
      - Locking voku/portable-ascii (1.5.6)
      - Locking webmozart/assert (1.10.0)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 110 installs, 0 updates, 0 removals
      - Downloading doctrine/inflector (2.0.4)
      - Downloading doctrine/lexer (1.2.1)
      - Downloading dragonmantank/cron-expression (v3.1.0)
      - Downloading symfony/var-dumper (v5.4.1)
      - Downloading symfony/string (v6.0.1)
      - Downloading psr/container (1.1.2)
      - Downloading symfony/service-contracts (v2.4.1)
      - Downloading symfony/console (v5.4.1)
      - Downloading psr/log (2.0.0)
      - Downloading monolog/monolog (2.3.5)
      - Downloading voku/portable-ascii (1.5.6)
      - Downloading phpoption/phpoption (1.8.1)
      - Downloading graham-campbell/result-type (v1.0.4)
      - Downloading vlucas/phpdotenv (v5.4.1)
      - Downloading symfony/css-selector (v6.0.1)
      - Downloading tijsverkoyen/css-to-inline-styles (2.2.4)
      - Downloading symfony/routing (v5.4.0)
      - Downloading symfony/polyfill-php72 (v1.23.0)
      - Downloading symfony/polyfill-intl-idn (v1.23.0)
      - Downloading symfony/mime (v5.4.0)
      - Downloading symfony/http-foundation (v5.4.1)
      - Downloading psr/event-dispatcher (1.0.0)
      - Downloading symfony/event-dispatcher-contracts (v3.0.0)
      - Downloading symfony/event-dispatcher (v6.0.1)
      - Downloading symfony/error-handler (v5.4.1)
      - Downloading symfony/http-kernel (v5.4.1)
      - Downloading symfony/finder (v5.4.0)
      - Downloading symfony/polyfill-iconv (v1.23.0)
      - Downloading egulias/email-validator (2.1.25)
      - Downloading swiftmailer/swiftmailer (v6.3.0)
      - Downloading symfony/polyfill-php81 (v1.23.0)
      - Downloading ramsey/collection (1.2.2)
      - Downloading brick/math (0.9.3)
      - Downloading ramsey/uuid (4.2.3)
      - Downloading psr/simple-cache (1.0.1)
      - Downloading opis/closure (3.6.2)
      - Downloading symfony/translation-contracts (v3.0.0)
      - Downloading symfony/translation (v6.0.1)
      - Downloading nesbot/carbon (2.55.2)
      - Downloading league/mime-type-detection (1.9.0)
      - Downloading league/flysystem (1.1.9)
      - Downloading nette/utils (v3.2.6)
      - Downloading nette/schema (v1.2.2)
      - Downloading dflydev/dot-access-data (v3.0.1)
      - Downloading league/config (v1.1.1)
      - Downloading league/commonmark (2.1.0)
      - Downloading laravel/serializable-closure (v1.0.5)
      - Downloading laravel/framework (v8.76.2)
      - Downloading facade/ignition-contracts (1.0.2)
      - Downloading facade/flare-client-php (1.9.1)
      - Downloading facade/ignition (2.17.2)
      - Downloading fakerphp/faker (v1.17.0)
      - Downloading asm89/stack-cors (v2.0.3)
      - Downloading fruitcake/laravel-cors (v2.0.4)
      - Downloading psr/http-message (1.0.1)
      - Downloading psr/http-client (1.0.1)
      - Downloading ralouphie/getallheaders (3.0.3)
      - Downloading psr/http-factory (1.0.1)
      - Downloading guzzlehttp/psr7 (2.1.0)
      - Downloading guzzlehttp/promises (1.5.1)
      - Downloading guzzlehttp/guzzle (7.4.1)
      - Downloading laravel/sail (v1.12.12)
      - Downloading laravel/sanctum (v2.13.0)
      - Downloading nikic/php-parser (v4.13.2)
      - Downloading psy/psysh (v0.10.12)
      - Downloading laravel/tinker (v2.6.3)
      - Downloading hamcrest/hamcrest-php (v2.0.1)
      - Downloading mockery/mockery (1.4.4)
      - Downloading filp/whoops (2.14.4)
      - Downloading nunomaduro/collision (v5.10.0)
      - Downloading phpunit/php-file-iterator (3.0.6)
      - Downloading phpunit/php-code-coverage (9.2.10)
      - Downloading phpspec/prophecy (v1.15.0)
      - Installing doctrine/inflector (2.0.4): Extracting archive
      - Installing doctrine/lexer (1.2.1): Extracting archive
      - Installing symfony/polyfill-ctype (v1.23.0): Extracting archive
      - Installing webmozart/assert (1.10.0): Extracting archive
      - Installing dragonmantank/cron-expression (v3.1.0): Extracting archive
      - Installing symfony/polyfill-php80 (v1.23.1): Extracting archive
      - Installing symfony/polyfill-mbstring (v1.23.1): Extracting archive
      - Installing symfony/var-dumper (v5.4.1): Extracting archive
      - Installing symfony/polyfill-intl-normalizer (v1.23.0): Extracting archive
      - Installing symfony/polyfill-intl-grapheme (v1.23.1): Extracting archive
      - Installing symfony/string (v6.0.1): Extracting archive
      - Installing psr/container (1.1.2): Extracting archive
      - Installing symfony/service-contracts (v2.4.1): Extracting archive
      - Installing symfony/polyfill-php73 (v1.23.0): Extracting archive
      - Installing symfony/deprecation-contracts (v3.0.0): Extracting archive
      - Installing symfony/console (v5.4.1): Extracting archive
      - Installing psr/log (2.0.0): Extracting archive
      - Installing monolog/monolog (2.3.5): Extracting archive
      - Installing voku/portable-ascii (1.5.6): Extracting archive
      - Installing phpoption/phpoption (1.8.1): Extracting archive
      - Installing graham-campbell/result-type (v1.0.4): Extracting archive
      - Installing vlucas/phpdotenv (v5.4.1): Extracting archive
      - Installing symfony/css-selector (v6.0.1): Extracting archive
      - Installing tijsverkoyen/css-to-inline-styles (2.2.4): Extracting archive
      - Installing symfony/routing (v5.4.0): Extracting archive
      - Installing symfony/process (v5.4.0): Extracting archive
      - Installing symfony/polyfill-php72 (v1.23.0): Extracting archive
      - Installing symfony/polyfill-intl-idn (v1.23.0): Extracting archive
      - Installing symfony/mime (v5.4.0): Extracting archive
      - Installing symfony/http-foundation (v5.4.1): Extracting archive
      - Installing psr/event-dispatcher (1.0.0): Extracting archive
      - Installing symfony/event-dispatcher-contracts (v3.0.0): Extracting archive
      - Installing symfony/event-dispatcher (v6.0.1): Extracting archive
      - Installing symfony/error-handler (v5.4.1): Extracting archive
      - Installing symfony/http-kernel (v5.4.1): Extracting archive
      - Installing symfony/finder (v5.4.0): Extracting archive
      - Installing symfony/polyfill-iconv (v1.23.0): Extracting archive
      - Installing egulias/email-validator (2.1.25): Extracting archive
      - Installing swiftmailer/swiftmailer (v6.3.0): Extracting archive
      - Installing symfony/polyfill-php81 (v1.23.0): Extracting archive
      - Installing ramsey/collection (1.2.2): Extracting archive
      - Installing brick/math (0.9.3): Extracting archive
      - Installing ramsey/uuid (4.2.3): Extracting archive
      - Installing psr/simple-cache (1.0.1): Extracting archive
      - Installing opis/closure (3.6.2): Extracting archive
      - Installing symfony/translation-contracts (v3.0.0): Extracting archive
      - Installing symfony/translation (v6.0.1): Extracting archive
      - Installing nesbot/carbon (2.55.2): Extracting archive
      - Installing league/mime-type-detection (1.9.0): Extracting archive
      - Installing league/flysystem (1.1.9): Extracting archive
      - Installing nette/utils (v3.2.6): Extracting archive
      - Installing nette/schema (v1.2.2): Extracting archive
      - Installing dflydev/dot-access-data (v3.0.1): Extracting archive
      - Installing league/config (v1.1.1): Extracting archive
      - Installing league/commonmark (2.1.0): Extracting archive
      - Installing laravel/serializable-closure (v1.0.5): Extracting archive
      - Installing laravel/framework (v8.76.2): Extracting archive
      - Installing facade/ignition-contracts (1.0.2): Extracting archive
      - Installing facade/flare-client-php (1.9.1): Extracting archive
      - Installing facade/ignition (2.17.2): Extracting archive
      - Installing fakerphp/faker (v1.17.0): Extracting archive
      - Installing asm89/stack-cors (v2.0.3): Extracting archive
      - Installing fruitcake/laravel-cors (v2.0.4): Extracting archive
      - Installing psr/http-message (1.0.1): Extracting archive
      - Installing psr/http-client (1.0.1): Extracting archive
      - Installing ralouphie/getallheaders (3.0.3): Extracting archive
      - Installing psr/http-factory (1.0.1): Extracting archive
      - Installing guzzlehttp/psr7 (2.1.0): Extracting archive
      - Installing guzzlehttp/promises (1.5.1): Extracting archive
      - Installing guzzlehttp/guzzle (7.4.1): Extracting archive
      - Installing laravel/sail (v1.12.12): Extracting archive
      - Installing laravel/sanctum (v2.13.0): Extracting archive
      - Installing nikic/php-parser (v4.13.2): Extracting archive
      - Installing psy/psysh (v0.10.12): Extracting archive
      - Installing laravel/tinker (v2.6.3): Extracting archive
      - Installing hamcrest/hamcrest-php (v2.0.1): Extracting archive
      - Installing mockery/mockery (1.4.4): Extracting archive
      - Installing filp/whoops (2.14.4): Extracting archive
      - Installing nunomaduro/collision (v5.10.0): Extracting archive
      - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
      - Installing phpdocumentor/type-resolver (1.5.1): Extracting archive
      - Installing phpdocumentor/reflection-docblock (5.3.0): Extracting archive
      - Installing sebastian/version (3.0.2): Extracting archive
      - Installing sebastian/type (2.3.4): Extracting archive
      - Installing sebastian/resource-operations (3.0.3): Extracting archive
      - Installing sebastian/recursion-context (4.0.4): Extracting archive
      - Installing sebastian/object-reflector (2.0.4): Extracting archive
      - Installing sebastian/object-enumerator (4.0.4): Extracting archive
      - Installing sebastian/global-state (5.0.3): Extracting archive
      - Installing sebastian/exporter (4.0.4): Extracting archive
      - Installing sebastian/environment (5.1.3): Extracting archive
      - Installing sebastian/diff (4.0.4): Extracting archive
      - Installing sebastian/comparator (4.0.6): Extracting archive
      - Installing sebastian/code-unit (1.0.8): Extracting archive
      - Installing sebastian/cli-parser (1.0.1): Extracting archive
      - Installing phpunit/php-timer (5.0.3): Extracting archive
      - Installing phpunit/php-text-template (2.0.4): Extracting archive
      - Installing phpunit/php-invoker (3.1.1): Extracting archive
      - Installing phpunit/php-file-iterator (3.0.6): Extracting archive
      - Installing theseer/tokenizer (1.2.1): Extracting archive
      - Installing sebastian/lines-of-code (1.0.3): Extracting archive
      - Installing sebastian/complexity (2.0.2): Extracting archive
      - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
      - Installing phpunit/php-code-coverage (9.2.10): Extracting archive
      - Installing doctrine/instantiator (1.4.0): Extracting archive
      - Installing phpspec/prophecy (v1.15.0): Extracting archive
      - Installing phar-io/version (3.1.0): Extracting archive
      - Installing phar-io/manifest (2.0.3): Extracting archive
      - Installing myclabs/deep-copy (1.10.2): Extracting archive
      - Installing phpunit/phpunit (9.5.10): Extracting archive
    76 package suggestions were added by new dependencies, use `composer suggest` to see details.
    Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
    > Illuminate\Foundation\ComposerScripts::postAutoloadDump
    > @php artisan package:discover --ansi
    Discovered Package: facade/ignition
    Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
    Package manifest generated successfully.
    77 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
    > @php artisan vendor:publish --tag=laravel-assets --ansi --force
    No publishable resources for tag [laravel-assets].
    Publishing complete.
    > @php artisan key:generate --ansi
    Application key set successfully.

Application ready! Build something amazing.
Sail scaffolding installed successfully.

Please provide your password so we can make some final adjustments to your application's permissions.

[sudo] password for wangqiang:

Thank you! We hope you build something incredible. Dive in with: cd weibo && ./vendor/bin/sail up
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot$


3、进入目录:weibo,运行命令:./vendor/bin/sail build。报错:FileNotFoundError: [Errno 2] No such file or directory。[7207] Failed to execute script docker-compose。如图3
进入目录:weibo,运行命令:./vendor/bin/sail build。报错:FileNotFoundError: [Errno 2] No such file or directory。[7207] Failed to execute script docker-compose。

图3

<pre class="wp-block-syntaxhighlighter-code">

wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ ./vendor/bin/sail build
Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 81, in main
  File "compose/cli/main.py", line 200, in perform_command
  File "compose/cli/command.py", line 70, in project_from_options
  File "compose/cli/command.py", line 146, in get_project
  File "compose/cli/command.py", line 206, in get_project_name
  File "posixpath.py", line 383, in abspath
FileNotFoundError: [Errno 2] No such file or directory
[7185] Failed to execute script docker-compose
Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 81, in main
  File "compose/cli/main.py", line 200, in perform_command
  File "compose/cli/command.py", line 70, in project_from_options
  File "compose/cli/command.py", line 146, in get_project
  File "compose/cli/command.py", line 206, in get_project_name
  File "posixpath.py", line 383, in abspath
FileNotFoundError: [Errno 2] No such file or directory
[7197] Failed to execute script docker-compose
Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 81, in main
  File "compose/cli/main.py", line 200, in perform_command
  File "compose/cli/command.py", line 70, in project_from_options
  File "compose/cli/command.py", line 146, in get_project
  File "compose/cli/command.py", line 206, in get_project_name
  File "posixpath.py", line 383, in abspath
FileNotFoundError: [Errno 2] No such file or directory
[7207] Failed to execute script docker-compose
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$

</pre>
4、关闭 Docker Desktop,重新打开 Docker Desktop,删除容器 weibo。再次执行命令:./vendor/bin/sail build。运行命令:./vendor/bin/sail up -d。报错:ERROR: for weibo_laravel.test_1 Cannot start service laravel.test: driver failed programming external connectivity on endpoint weibo_laravel.test_1 (103c7d0eca8c6625d55c959f6b4a3fbe7921b8f12d29474519bcde62b876a555): Bind for 0.0.0.0:80 failed: port is already allocated。如图4
关闭 Docker Desktop,重新打开 Docker Desktop,删除容器 weibo。再次执行命令:./vendor/bin/sail build。运行命令:./vendor/bin/sail up -d。报错:ERROR: for weibo_laravel.test_1  Cannot start service laravel.test: driver failed programming external connectivity on endpoint weibo_laravel.test_1 (103c7d0eca8c6625d55c959f6b4a3fbe7921b8f12d29474519bcde62b876a555): Bind for 0.0.0.0:80 failed: port is already allocated。

图4



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ ./vendor/bin/sail build
weibo_laravel.test_1   start-container                  Exit 128

Shutting down old Sail processes...
mysql uses an image, skipping
redis uses an image, skipping
meilisearch uses an image, skipping
mailhog uses an image, skipping
selenium uses an image, skipping
Building laravel.test
[+] Building 6.3s (16/16) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.8s
 => => transferring dockerfile: 38B                                                                                0.0s
 => [internal] load .dockerignore                                                                                  1.1s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for docker.io/library/ubuntu:21.04                                                    4.7s
 => [ 1/11] FROM docker.io/library/ubuntu:21.04@sha256:93a94c12448f393522f44d8a1b34936b7f76890adea34b80b87a245524  0.0s
 => [internal] load build context                                                                                  0.2s
 => => transferring context: 99B                                                                                   0.0s
 => CACHED [ 2/11] WORKDIR /var/www/html                                                                           0.0s
 => CACHED [ 3/11] RUN ln -snf /usr/share/zoneinfo/UTC /etc/localtime && echo UTC > /etc/timezone                  0.0s
 => CACHED [ 4/11] RUN apt-get update     && apt-get install -y gnupg gosu curl ca-certificates zip unzip git sup  0.0s
 => CACHED [ 5/11] RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1                                           0.0s
 => CACHED [ 6/11] RUN groupadd --force -g 1000 sail                                                               0.0s
 => CACHED [ 7/11] RUN useradd -ms /bin/bash --no-user-group -g 1000 -u 1337 sail                                  0.0s
 => CACHED [ 8/11] COPY start-container /usr/local/bin/start-container                                             0.0s
 => CACHED [ 9/11] COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf                                   0.0s
 => CACHED [10/11] COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini                                                0.0s
 => CACHED [11/11] RUN chmod +x /usr/local/bin/start-container                                                     0.0s
 => exporting to image                                                                                             0.0s
 => => exporting layers                                                                                            0.0s
 => => writing image sha256:e61442fd4297b3cb8dcc44e9c4501ba75eae255b6a7940040df40f49b04481bf                       0.0s
 => => naming to sail-8.1/app                                                                                      0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ ./vendor/bin/sail up -d
Creating network "weibo_sail" with driver "bridge"
Creating weibo_mailhog_1     ... done
Creating weibo_meilisearch_1 ... done
Creating weibo_redis_1       ... done
Creating weibo_mysql_1       ... done
Creating weibo_selenium_1    ... done
Creating weibo_laravel.test_1 ...
Creating weibo_laravel.test_1 ... error

ERROR: for weibo_laravel.test_1  Cannot start service laravel.test: driver failed programming external connectivity on endpoint weibo_laravel.test_1 (103c7d0eca8c6625d55c959f6b4a3fbe7921b8f12d29474519bcde62b876a555): Bind for 0.0.0.0:80 failed: port is already allocated

ERROR: for laravel.test  Cannot start service laravel.test: driver failed programming external connectivity on endpoint weibo_laravel.test_1 (103c7d0eca8c6625d55c959f6b4a3fbe7921b8f12d29474519bcde62b876a555): Bind for 0.0.0.0:80 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$


5、打开 Docker Desktop,停止容器 example-app。以让出端口 80,以及其他有冲突的端口。后续计划支持多个 Laravel Sail 环境并设定自己想要的域名。如图5
打开 Docker Desktop,停止容器 example-app。以让出端口 80,以及其他有冲突的端口。后续计划支持多个 Laravel Sail 环境并设定自己想要的域名。

图5

6、运行命令:./vendor/bin/sail up -d。创建容器成功。如图6
运行命令:./vendor/bin/sail up -d。创建容器成功。

图6



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/weibo$ ./vendor/bin/sail up -d
weibo_laravel.test_1   start-container                  Exit 128

Shutting down old Sail processes...
Creating network "weibo_sail" with driver "bridge"
Creating weibo_mailhog_1      ... done
Creating weibo_selenium_1    ... done
Creating weibo_mysql_1       ... done
Creating weibo_redis_1       ... done
Creating weibo_meilisearch_1 ... done
Creating weibo_laravel.test_1 ... done


7、编辑 C:/Windows/System32/Drivers/etc/hosts 文件,指定 IP 与域名之间的映射关系。


127.0.0.1 weibo.test


8、在浏览器中打开网址:http://weibo.test/ 。响应 200。如图7
在浏览器中打开网址:http://weibo.test/ 。响应 200。

图7

 ]]>
https://www.shuijingwanwq.com/2021/12/24/5588/feed/ 0
在 Windows 10 专业版中搭建 Laravel Sail 开发环境 https://www.shuijingwanwq.com/2021/12/23/5559/ https://www.shuijingwanwq.com/2021/12/23/5559/#respond Thu, 23 Dec 2021 01:45:36 +0000 https://www.shuijingwanwq.com/?p=5559 浏览量: 307 1、Laravel Sail 要求支持 WSL 2 的 Windows 10 系统。在 2020 年五月份发布的 2004 版本才支持 WSL 2 功能,所以我们的系统需更新到等于或大于 2004 版本。查看系统版本,可以使用 winver 命令,参考 Windows 10 release information ,版本的发布时间大于 1909 即可。系统版本符合要求。如图1
查看系统版本,可以使用 winver 命令,参考 Windows 10 release information ,版本的发布时间大于 1909 即可。

图1

2、先基于 360 升级至:最新的 21H1 的版本。如图2
先基于 360 升级至:最新的 21H1 的版本。

图2

3、查看系统版本,已经升级至:21H1 的版本。如图3
查看系统版本,已经升级至:21H1 的版本。

图3

4、搜索打开 Windows 功能管理 窗口,确保下图红框框住的两个地方都已开启:适用于 Linux 的 Windows 子系统、远程差分压缩 API 支持。如图4
搜索打开 Windows 功能管理 窗口,确保下图红框框住的两个地方都已开启:适用于 Linux 的 Windows 子系统、远程差分压缩 API 支持。

图4

5、为了更好地访问 Windows 的子系统,推荐使用 Windows Terminal 作为命令行工具。打开微软商店,搜索关键字 Windows Terminal ,在搜索结果中点击安装即可。如图5
为了更好地访问 Windows 的子系统,推荐使用 Windows Terminal 作为命令行工具。打开微软商店,搜索关键字 Windows Terminal ,在搜索结果中点击安装即可。

图5

6、下载和安装子系统:Ubuntu 。打开微软商店,搜索关键词 Ubuntu,第一和第二个都可以,选择第二个:Ubuntu 20.04 LTS。如图6
下载和安装子系统:Ubuntu 。打开微软商店,搜索关键词 Ubuntu,第一和第二个都可以,选择第二个:Ubuntu 20.04 LTS。

图6

7、提示创建一个 Ubuntu 系统的用户,入用户名,接下来输入密码即可完成 Ubuntu 子系统的安装。这个 Ubuntu 为当前 Windows 系统的子系统,接下来我们的 Docker 会基于此系统运行。如图7
提示创建一个 Ubuntu 系统的用户,输入用户名,接下来输入密码即可完成 Ubuntu 子系统的安装。这个 Ubuntu 为当前 Windows 系统的子系统,接下来我们的 Docker 会基于此系统运行。

图7

8、前往 Docker 官网下载 Docker Desktop:https://hub.docker.com/editions/community/docker-ce-desktop-windows ,下载完成后点击安装包安装,一直下一步即可。 9、提示:WSL 2 installation is incomplete. WSL 2 安装不完整。如图8
提示:WSL 2 installation is incomplete. WSL 2 安装不完整。

图8



WSL 2 installation is incomplete.
The WSL 2 Linux kernel is now installed using a separate MSI update package. Please click the link and follow the instructions to install the kernel update:https://aka.ms/wsl2kernel

Press restart after installing the Linux kernel


10、点击链接并按照说明安装内核更新:https://aka.ms/wsl2kernel 。下载并安装 Linux 内核更新包。如图9
点击链接并按照说明安装内核更新:https://aka.ms/wsl2kernel 。下载并安装 Linux 内核更新包。

图9

11、重启电脑,再次打开 Docker Desktop,报错:Docker failed to initialize。暂时不用理会。如图10
重启电脑,再次打开 Docker Desktop,报错:Docker failed to initialize。暂时不用理会。

图10

12、再次重启电脑后。打开 Docker Desktop,未再报错。进入配置页面 – General,默认已勾选 Use the WSL 2 based engine,开启 WSL2 模式。如图11
再次重启电脑后。打开 Docker Desktop,未再报错。进入配置页面 - General,默认已勾选 Use the WSL 2 based engine,开启 WSL2 模式。

图11

13、配置 – Resources – WSL Integration,选择我们上一步安装的 Ubuntu 系统,但是不存在 ubuntu 选项。如图12
配置 - Resources - WSL Integration,选择我们上一步安装的 Ubuntu 系统,但是不存在 ubuntu 选项。

图12

14、参考网址:https://learnku.com/articles/54890 。打开:Windows Terminal,转换为 WSL 2。如图13
参考网址:https://learnku.com/articles/54890 。打开:Windows Terminal,转换为 WSL 2。

图13



PS C:\Users\Lenovo> wsl --list --verbose
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         1
  docker-desktop-data    Running         2
  docker-desktop         Running         2
PS C:\Users\Lenovo> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。
PS C:\Users\Lenovo>


15、点击按钮 Refresh,选项 Ubuntu-20.04 已经出现,开启。如图14
点击按钮 Refresh,选项 Ubuntu-20.04 已经出现,开启。

图14

16、创建测试项目,打开 Windows Terminal 命令行,按照以下指示进入 Ubuntu 系统。如图15
创建测试项目,打开 Windows Terminal 命令行,按照以下指示进入 Ubuntu 系统。

图15

17、Ubuntu 作为 Windows 子系统,可以访问到主系统下的硬盘。为了方便管理代码,我在 E 盘下早已创建了 wwwroot 目录,进入此目录后,使用以下命令进行创建一个测试的 Laravel 项目。如图16
Ubuntu 作为 Windows 子系统,可以访问到主系统下的硬盘。为了方便管理代码,我在 E 盘下早已创建了 wwwroot 目录,进入此目录后,使用以下命令进行创建一个测试的 Laravel 项目。

图16



wangqiang@DESKTOP-QLPK8QM:/mnt/c/Users/Lenovo$ cd /mnt/e
wangqiang@DESKTOP-QLPK8QM:/mnt/e$ ls
'$RECYCLE.BIN'  'System Volume Information'   cms   pagefile.sys    phpuploadtmp
 Develop         c                            css   phpsessiontmp   wwwroot
wangqiang@DESKTOP-QLPK8QM:/mnt/e$ cd wwwroot/
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot$ curl -s https://laravel.build/example-app | bash
Unable to find image 'laravelsail/php81-composer:latest' locally
latest: Pulling from laravelsail/php81-composer
eff15d958d66: Pull complete
933427dc39f7: Pull complete
35bb08dc7ee2: Pull complete
58a3f26800d7: Pull complete
28803bfad74c: Pull complete
341a482d0bd3: Pull complete
03c4148389b1: Pull complete
fa3a9bfc7793: Pull complete
024907232600: Pull complete
df5987d70de6: Pull complete
e2a72a518bd8: Pull complete
b1ba689993c8: Pull complete
3bd142ab0b85: Pull complete
872fe34989f0: Pull complete
Digest: sha256:b27920b769ad8dc036a9ede3ae36f51a280d370ec7d125e77ca1924c9fa21dbb
Status: Downloaded newer image for laravelsail/php81-composer:latest

 _                               _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|

Warning: TTY mode requires /dev/tty to be read/writable.
    Creating a "laravel/laravel" project at "./example-app"
    Installing laravel/laravel (v8.6.9)
      - Downloading laravel/laravel (v8.6.9)
      - Installing laravel/laravel (v8.6.9): Extracting archive
    Created project in /opt/example-app
    > @php -r "file_exists('.env') || copy('.env.example', '.env');"
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 110 installs, 0 updates, 0 removals
      - Locking asm89/stack-cors (v2.0.3)
  - Locking brick/math (0.9.3)
      - Locking dflydev/dot-access-data (v3.0.1)
  - Locking doctrine/inflector (2.0.4)
      - Locking doctrine/instantiator (1.4.0)
      - Locking doctrine/lexer (1.2.1)
  - Locking dragonmantank/cron-expression (v3.1.0)
      - Locking egulias/email-validator (2.1.25)
      - Locking facade/flare-client-php (1.9.1)
      - Locking facade/ignition (2.17.2)
      - Locking facade/ignition-contracts (1.0.2)
      - Locking fakerphp/faker (v1.17.0)
      - Locking filp/whoops (2.14.4)
      - Locking fruitcake/laravel-cors (v2.0.4)
      - Locking graham-campbell/result-type (v1.0.4)
  - Locking guzzlehttp/guzzle (7.4.1)
  - Locking guzzlehttp/promises (1.5.1)
  - Locking guzzlehttp/psr7 (2.1.0)
      - Locking hamcrest/hamcrest-php (v2.0.1)
  - Locking laravel/framework (v8.76.2)
  - Locking laravel/sail (v1.12.12)
  - Locking laravel/sanctum (v2.13.0)
  - Locking laravel/serializable-closure (v1.0.5)
      - Locking laravel/tinker (v2.6.3)
  - Locking league/commonmark (2.1.0)
  - Locking league/config (v1.1.1)
  - Locking league/flysystem (1.1.9)
  - Locking league/mime-type-detection (1.9.0)
      - Locking mockery/mockery (1.4.4)
  - Locking monolog/monolog (2.3.5)
      - Locking myclabs/deep-copy (1.10.2)
  - Locking nesbot/carbon (2.55.2)
      - Locking nette/schema (v1.2.2)
      - Locking nette/utils (v3.2.6)
      - Locking nikic/php-parser (v4.13.2)
      - Locking nunomaduro/collision (v5.10.0)
      - Locking opis/closure (3.6.2)
      - Locking phar-io/manifest (2.0.3)
      - Locking phar-io/version (3.1.0)
      - Locking phpdocumentor/reflection-common (2.2.0)
      - Locking phpdocumentor/reflection-docblock (5.3.0)
      - Locking phpdocumentor/type-resolver (1.5.1)
      - Locking phpoption/phpoption (1.8.1)
  - Locking phpspec/prophecy (v1.15.0)
      - Locking phpunit/php-code-coverage (9.2.10)
  - Locking phpunit/php-file-iterator (3.0.6)
      - Locking phpunit/php-invoker (3.1.1)
  - Locking phpunit/php-text-template (2.0.4)
      - Locking phpunit/php-timer (5.0.3)
  - Locking phpunit/phpunit (9.5.10)
      - Locking psr/container (1.1.2)
      - Locking psr/event-dispatcher (1.0.0)
      - Locking psr/http-client (1.0.1)
      - Locking psr/http-factory (1.0.1)
  - Locking psr/http-message (1.0.1)
  - Locking psr/log (2.0.0)
  - Locking psr/simple-cache (1.0.1)
      - Locking psy/psysh (v0.10.12)
  - Locking ralouphie/getallheaders (3.0.3)
      - Locking ramsey/collection (1.2.2)
      - Locking ramsey/uuid (4.2.3)
  - Locking sebastian/cli-parser (1.0.1)
      - Locking sebastian/code-unit (1.0.8)
      - Locking sebastian/code-unit-reverse-lookup (2.0.3)
  - Locking sebastian/comparator (4.0.6)
  - Locking sebastian/complexity (2.0.2)
      - Locking sebastian/diff (4.0.4)
      - Locking sebastian/environment (5.1.3)
  - Locking sebastian/exporter (4.0.4)
      - Locking sebastian/global-state (5.0.3)
  - Locking sebastian/lines-of-code (1.0.3)
      - Locking sebastian/object-enumerator (4.0.4)
  - Locking sebastian/object-reflector (2.0.4)
      - Locking sebastian/recursion-context (4.0.4)
      - Locking sebastian/resource-operations (3.0.3)
      - Locking sebastian/type (2.3.4)
      - Locking sebastian/version (3.0.2)
      - Locking swiftmailer/swiftmailer (v6.3.0)
      - Locking symfony/console (v5.4.1)
      - Locking symfony/css-selector (v6.0.1)
  - Locking symfony/deprecation-contracts (v3.0.0)
      - Locking symfony/error-handler (v5.4.1)
      - Locking symfony/event-dispatcher (v6.0.1)
      - Locking symfony/event-dispatcher-contracts (v3.0.0)
      - Locking symfony/finder (v5.4.0)
  - Locking symfony/http-foundation (v5.4.1)
      - Locking symfony/http-kernel (v5.4.1)
  - Locking symfony/mime (v5.4.0)
      - Locking symfony/polyfill-ctype (v1.23.0)
      - Locking symfony/polyfill-iconv (v1.23.0)
      - Locking symfony/polyfill-intl-grapheme (v1.23.1)
  - Locking symfony/polyfill-intl-idn (v1.23.0)
      - Locking symfony/polyfill-intl-normalizer (v1.23.0)
      - Locking symfony/polyfill-mbstring (v1.23.1)
  - Locking symfony/polyfill-php72 (v1.23.0)
      - Locking symfony/polyfill-php73 (v1.23.0)
      - Locking symfony/polyfill-php80 (v1.23.1)
      - Locking symfony/polyfill-php81 (v1.23.0)
      - Locking symfony/process (v5.4.0)
      - Locking symfony/routing (v5.4.0)
      - Locking symfony/service-contracts (v2.4.1)
      - Locking symfony/string (v6.0.1)
  - Locking symfony/translation (v6.0.1)
      - Locking symfony/translation-contracts (v3.0.0)
      - Locking symfony/var-dumper (v5.4.1)
      - Locking theseer/tokenizer (1.2.1)
      - Locking tijsverkoyen/css-to-inline-styles (2.2.4)
      - Locking vlucas/phpdotenv (v5.4.1)
      - Locking voku/portable-ascii (1.5.6)
  - Locking webmozart/assert (1.10.0)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 110 installs, 0 updates, 0 removals
      - Downloading doctrine/inflector (2.0.4)
      - Downloading doctrine/lexer (1.2.1)
      - Downloading dragonmantank/cron-expression (v3.1.0)
      - Downloading symfony/var-dumper (v5.4.1)
      - Downloading symfony/string (v6.0.1)
      - Downloading psr/container (1.1.2)
      - Downloading symfony/service-contracts (v2.4.1)
      - Downloading symfony/console (v5.4.1)
      - Downloading psr/log (2.0.0)
      - Downloading monolog/monolog (2.3.5)
      - Downloading voku/portable-ascii (1.5.6)
      - Downloading phpoption/phpoption (1.8.1)
      - Downloading graham-campbell/result-type (v1.0.4)
      - Downloading vlucas/phpdotenv (v5.4.1)
      - Downloading symfony/css-selector (v6.0.1)
      - Downloading tijsverkoyen/css-to-inline-styles (2.2.4)
      - Downloading symfony/routing (v5.4.0)
      - Downloading symfony/polyfill-php72 (v1.23.0)
      - Downloading symfony/polyfill-intl-idn (v1.23.0)
      - Downloading symfony/mime (v5.4.0)
      - Downloading symfony/http-foundation (v5.4.1)
      - Downloading psr/event-dispatcher (1.0.0)
      - Downloading symfony/event-dispatcher-contracts (v3.0.0)
      - Downloading symfony/event-dispatcher (v6.0.1)
      - Downloading symfony/error-handler (v5.4.1)
      - Downloading symfony/http-kernel (v5.4.1)
      - Downloading symfony/finder (v5.4.0)
      - Downloading symfony/polyfill-iconv (v1.23.0)
      - Downloading egulias/email-validator (2.1.25)
      - Downloading swiftmailer/swiftmailer (v6.3.0)
      - Downloading symfony/polyfill-php81 (v1.23.0)
      - Downloading ramsey/collection (1.2.2)
      - Downloading brick/math (0.9.3)
      - Downloading ramsey/uuid (4.2.3)
      - Downloading psr/simple-cache (1.0.1)
      - Downloading opis/closure (3.6.2)
      - Downloading symfony/translation-contracts (v3.0.0)
      - Downloading symfony/translation (v6.0.1)
      - Downloading nesbot/carbon (2.55.2)
      - Downloading league/mime-type-detection (1.9.0)
      - Downloading league/flysystem (1.1.9)
      - Downloading nette/utils (v3.2.6)
      - Downloading nette/schema (v1.2.2)
      - Downloading dflydev/dot-access-data (v3.0.1)
      - Downloading league/config (v1.1.1)
      - Downloading league/commonmark (2.1.0)
      - Downloading laravel/serializable-closure (v1.0.5)
      - Downloading laravel/framework (v8.76.2)
      - Downloading facade/ignition-contracts (1.0.2)
      - Downloading facade/flare-client-php (1.9.1)
      - Downloading facade/ignition (2.17.2)
      - Downloading fakerphp/faker (v1.17.0)
      - Downloading asm89/stack-cors (v2.0.3)
      - Downloading fruitcake/laravel-cors (v2.0.4)
      - Downloading psr/http-message (1.0.1)
      - Downloading psr/http-client (1.0.1)
      - Downloading ralouphie/getallheaders (3.0.3)
      - Downloading psr/http-factory (1.0.1)
      - Downloading guzzlehttp/psr7 (2.1.0)
      - Downloading guzzlehttp/promises (1.5.1)
      - Downloading guzzlehttp/guzzle (7.4.1)
      - Downloading laravel/sail (v1.12.12)
      - Downloading laravel/sanctum (v2.13.0)
      - Downloading nikic/php-parser (v4.13.2)
      - Downloading psy/psysh (v0.10.12)
      - Downloading laravel/tinker (v2.6.3)
      - Downloading hamcrest/hamcrest-php (v2.0.1)
      - Downloading mockery/mockery (1.4.4)
      - Downloading filp/whoops (2.14.4)
      - Downloading nunomaduro/collision (v5.10.0)
      - Downloading phpunit/php-file-iterator (3.0.6)
      - Downloading phpunit/php-code-coverage (9.2.10)
      - Downloading phpspec/prophecy (v1.15.0)
      - Installing doctrine/inflector (2.0.4): Extracting archive
      - Installing doctrine/lexer (1.2.1): Extracting archive
      - Installing symfony/polyfill-ctype (v1.23.0): Extracting archive
      - Installing webmozart/assert (1.10.0): Extracting archive
      - Installing dragonmantank/cron-expression (v3.1.0): Extracting archive
      - Installing symfony/polyfill-php80 (v1.23.1): Extracting archive
      - Installing symfony/polyfill-mbstring (v1.23.1): Extracting archive
      - Installing symfony/var-dumper (v5.4.1): Extracting archive
      - Installing symfony/polyfill-intl-normalizer (v1.23.0): Extracting archive
      - Installing symfony/polyfill-intl-grapheme (v1.23.1): Extracting archive
      - Installing symfony/string (v6.0.1): Extracting archive
      - Installing psr/container (1.1.2): Extracting archive
      - Installing symfony/service-contracts (v2.4.1): Extracting archive
      - Installing symfony/polyfill-php73 (v1.23.0): Extracting archive
      - Installing symfony/deprecation-contracts (v3.0.0): Extracting archive
      - Installing symfony/console (v5.4.1): Extracting archive
      - Installing psr/log (2.0.0): Extracting archive
      - Installing monolog/monolog (2.3.5): Extracting archive
      - Installing voku/portable-ascii (1.5.6): Extracting archive
      - Installing phpoption/phpoption (1.8.1): Extracting archive
      - Installing graham-campbell/result-type (v1.0.4): Extracting archive
      - Installing vlucas/phpdotenv (v5.4.1): Extracting archive
      - Installing symfony/css-selector (v6.0.1): Extracting archive
      - Installing tijsverkoyen/css-to-inline-styles (2.2.4): Extracting archive
      - Installing symfony/routing (v5.4.0): Extracting archive
      - Installing symfony/process (v5.4.0): Extracting archive
      - Installing symfony/polyfill-php72 (v1.23.0): Extracting archive
      - Installing symfony/polyfill-intl-idn (v1.23.0): Extracting archive
      - Installing symfony/mime (v5.4.0): Extracting archive
      - Installing symfony/http-foundation (v5.4.1): Extracting archive
      - Installing psr/event-dispatcher (1.0.0): Extracting archive
      - Installing symfony/event-dispatcher-contracts (v3.0.0): Extracting archive
      - Installing symfony/event-dispatcher (v6.0.1): Extracting archive
      - Installing symfony/error-handler (v5.4.1): Extracting archive
      - Installing symfony/http-kernel (v5.4.1): Extracting archive
      - Installing symfony/finder (v5.4.0): Extracting archive
      - Installing symfony/polyfill-iconv (v1.23.0): Extracting archive
      - Installing egulias/email-validator (2.1.25): Extracting archive
      - Installing swiftmailer/swiftmailer (v6.3.0): Extracting archive
      - Installing symfony/polyfill-php81 (v1.23.0): Extracting archive
      - Installing ramsey/collection (1.2.2): Extracting archive
      - Installing brick/math (0.9.3): Extracting archive
      - Installing ramsey/uuid (4.2.3): Extracting archive
      - Installing psr/simple-cache (1.0.1): Extracting archive
      - Installing opis/closure (3.6.2): Extracting archive
      - Installing symfony/translation-contracts (v3.0.0): Extracting archive
      - Installing symfony/translation (v6.0.1): Extracting archive
      - Installing nesbot/carbon (2.55.2): Extracting archive
      - Installing league/mime-type-detection (1.9.0): Extracting archive
      - Installing league/flysystem (1.1.9): Extracting archive
      - Installing nette/utils (v3.2.6): Extracting archive
      - Installing nette/schema (v1.2.2): Extracting archive
      - Installing dflydev/dot-access-data (v3.0.1): Extracting archive
      - Installing league/config (v1.1.1): Extracting archive
      - Installing league/commonmark (2.1.0): Extracting archive
      - Installing laravel/serializable-closure (v1.0.5): Extracting archive
      - Installing laravel/framework (v8.76.2): Extracting archive
      - Installing facade/ignition-contracts (1.0.2): Extracting archive
      - Installing facade/flare-client-php (1.9.1): Extracting archive
      - Installing facade/ignition (2.17.2): Extracting archive
      - Installing fakerphp/faker (v1.17.0): Extracting archive
      - Installing asm89/stack-cors (v2.0.3): Extracting archive
      - Installing fruitcake/laravel-cors (v2.0.4): Extracting archive
      - Installing psr/http-message (1.0.1): Extracting archive
      - Installing psr/http-client (1.0.1): Extracting archive
      - Installing ralouphie/getallheaders (3.0.3): Extracting archive
      - Installing psr/http-factory (1.0.1): Extracting archive
      - Installing guzzlehttp/psr7 (2.1.0): Extracting archive
      - Installing guzzlehttp/promises (1.5.1): Extracting archive
      - Installing guzzlehttp/guzzle (7.4.1): Extracting archive
      - Installing laravel/sail (v1.12.12): Extracting archive
      - Installing laravel/sanctum (v2.13.0): Extracting archive
      - Installing nikic/php-parser (v4.13.2): Extracting archive
      - Installing psy/psysh (v0.10.12): Extracting archive
      - Installing laravel/tinker (v2.6.3): Extracting archive
      - Installing hamcrest/hamcrest-php (v2.0.1): Extracting archive
      - Installing mockery/mockery (1.4.4): Extracting archive
      - Installing filp/whoops (2.14.4): Extracting archive
      - Installing nunomaduro/collision (v5.10.0): Extracting archive
      - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
      - Installing phpdocumentor/type-resolver (1.5.1): Extracting archive
      - Installing phpdocumentor/reflection-docblock (5.3.0): Extracting archive
      - Installing sebastian/version (3.0.2): Extracting archive
      - Installing sebastian/type (2.3.4): Extracting archive
      - Installing sebastian/resource-operations (3.0.3): Extracting archive
      - Installing sebastian/recursion-context (4.0.4): Extracting archive
      - Installing sebastian/object-reflector (2.0.4): Extracting archive
      - Installing sebastian/object-enumerator (4.0.4): Extracting archive
      - Installing sebastian/global-state (5.0.3): Extracting archive
      - Installing sebastian/exporter (4.0.4): Extracting archive
      - Installing sebastian/environment (5.1.3): Extracting archive
      - Installing sebastian/diff (4.0.4): Extracting archive
      - Installing sebastian/comparator (4.0.6): Extracting archive
      - Installing sebastian/code-unit (1.0.8): Extracting archive
      - Installing sebastian/cli-parser (1.0.1): Extracting archive
      - Installing phpunit/php-timer (5.0.3): Extracting archive
      - Installing phpunit/php-text-template (2.0.4): Extracting archive
      - Installing phpunit/php-invoker (3.1.1): Extracting archive
      - Installing phpunit/php-file-iterator (3.0.6): Extracting archive
      - Installing theseer/tokenizer (1.2.1): Extracting archive
      - Installing sebastian/lines-of-code (1.0.3): Extracting archive
      - Installing sebastian/complexity (2.0.2): Extracting archive
      - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
      - Installing phpunit/php-code-coverage (9.2.10): Extracting archive
      - Installing doctrine/instantiator (1.4.0): Extracting archive
      - Installing phpspec/prophecy (v1.15.0): Extracting archive
      - Installing phar-io/version (3.1.0): Extracting archive
      - Installing phar-io/manifest (2.0.3): Extracting archive
      - Installing myclabs/deep-copy (1.10.2): Extracting archive
      - Installing phpunit/phpunit (9.5.10): Extracting archive
    76 package suggestions were added by new dependencies, use `composer suggest` to see details.
    Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
    > Illuminate\Foundation\ComposerScripts::postAutoloadDump
    > @php artisan package:discover --ansi
    Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
    Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
    Discovered Package: nunomaduro/collision
    Package manifest generated successfully.
    77 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
    > @php artisan vendor:publish --tag=laravel-assets --ansi --force
    No publishable resources for tag [laravel-assets].
Publishing complete.
    > @php artisan key:generate --ansi
    Application key set successfully.

Application ready! Build something amazing.
Sail scaffolding installed successfully.

Please provide your password so we can make some final adjustments to your application's permissions.

[sudo] password for wangqiang:

Thank you! We hope you build something incredible. Dive in with: cd example-app && ./vendor/bin/sail up
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot$


18、最终创建成功的界面。如图17
最终创建成功的界面。

图17

19、打开 E:\wwwroot\example-app 目录。如图18
打开 E:\wwwroot\example-app 目录。

图18

20、查看 Dockerfile 文件,Laravel 8 默认用的是 vendor/laravel/sail/runtimes/8.0 目录下的 Dockerfile。如图19
查看 Dockerfile 文件,Laravel 8 默认用的是 vendor/laravel/sail/runtimes/8.0 目录下的 Dockerfile。

图19

21、运行容器,在项目的根目录下,执行以下命令:./vendor/bin/sail up。第一次运行的时候,会初始化容器。建议翻墙。我一般不倾向于使用国内的镜像。报错。如图20
运行容器,在项目的根目录下,执行以下命令:./vendor/bin/sail up。第一次运行的时候,会初始化容器。建议翻墙。我一般不倾向于使用国内的镜像。报错。

图20



ERROR: for mysql  Cannot start service mysql: Ports are not available: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
ERROR: Encountered errors while bringing up the project.


22、原因应该在于本地的 mysql 数据库已经使用了 3306 端口,决定先将本地 mysql 数据库的端口修改为 3307。打开目录 C:\ProgramData\MySQL\MySQL Server 5.7,编辑 my.ini 文件。


[client]

# pipe
# socket=0.0
port=3307


[mysqld]

# The next three options are mutually exclusive to SERVER_PORT below.
# skip-networking

# enable-named-pipe

# shared-memory

# shared-memory-base-name=MYSQL

# The Pipe the MySQL Server will use
# socket=MYSQL

# The TCP/IP Port the MySQL Server will listen on
port=3307


23、重启电脑后,基于端口 3307 连接本地 mysql 数据库成功。如图21
重启电脑后,基于端口 3307 连接本地 mysql 数据库成功。

图21

24、再次运行命令:./vendor/bin/sail up。会从 mysql 处开始运行,总计耗费时长:20分钟。sail up 命令运行成功后,会一直显示软件的实时日志界面。如图22
再次运行命令:./vendor/bin/sail up。会从 mysql 处开始运行,总计耗费时长:。sail up 命令运行成功后,会一直显示软件的实时日志界面。

图22

25、此时你可以 ctrl+c 中断运行,再次运行时,可以使用 -d 参数让 sail up 命令在后台运行。如图23
此时你可以 ctrl+c 中断运行,再次运行时,可以使用 -d 参数让 sail up 命令在后台运行。

图23



meilisearch_1   | [2021-12-21T03:09:36Z INFO  actix_web::middleware::logger] 127.0.0.1:51806 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000297
^CGracefully stopping... (press Ctrl+C again to force)
Stopping example-app_laravel.test_1 ... done
Stopping example-app_mailhog_1      ... done
Stopping example-app_mysql_1        ... done
Stopping example-app_selenium_1     ... done
Stopping example-app_redis_1        ... done
Stopping example-app_meilisearch_1  ... done
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/example-app$ ./vendor/bin/sail up -d
example-app_laravel.test_1   start-container                  Exit 137
Shutting down old Sail processes...
Creating network "example-app_sail" with driver "bridge"
Creating example-app_redis_1       ... done
Creating example-app_mailhog_1     ... done
Creating example-app_meilisearch_1 ... done
Creating example-app_selenium_1    ... done
Creating example-app_mysql_1       ... done
Creating example-app_laravel.test_1 ... done
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/example-app$


26、打开 Docker Desktop,容器列表中存在容器:example-app,状态为运行中。如图24
打开 Docker Desktop,容器列表中存在容器:example-app,状态为运行中。

图24

27、在浏览器中打开网址:http://localhost/ ,响应 200 。Laravel v8.76.2 (PHP v8.1.0)。开发环境部署成功。如图25
在浏览器中打开网址:http://localhost/ ,响应 200 。Laravel v8.76.2 (PHP v8.1.0)。开发环境部署成功。

图25

28、针对 3306 端口被占用的问题,还有另外一种方案,即修改容器的端口为 43306。本地 mysql 数据库仍然使用 3306 端口。计划后续基于 Nginx Proxy Manager 实现。 29、编辑 C:/Windows/System32/Drivers/etc/hosts 文件,指定 IP 与域名之间的映射关系。


127.0.0.1 example-app.test


30、在浏览器中打开网址:http://example-app.test/ 。响应 200。如图26
在浏览器中打开网址:http://example-app.test/ 。响应 200。

图26

]]>
https://www.shuijingwanwq.com/2021/12/23/5559/feed/ 0