在 Windows 10 专业版中,使用多个 Laravel Sail 环境并设定自己想要的域名
1、安装 Nginx Proxy Manager ,打开 Windows Terminal 命令行,按照以下指示进入 Ubuntu 系统。如图1
2、进入用户根目录,新建目录:proxy-manager,进入 目录:proxy-manager,创建文件:docker-compose.yml。如图2
1 2 3 4 5 6 | wangqiang@DESKTOP-QLPK8QM:/mnt/c/Users/Lenovo$ cd ~ wangqiang@DESKTOP-QLPK8QM:~$ mkdir proxy-manager wangqiang@DESKTOP-QLPK8QM:~$ ls proxy-manager wangqiang@DESKTOP-QLPK8QM:~$ cd proxy-manager/ wangqiang@DESKTOP-QLPK8QM:~/proxy-manager$ nano docker-compose.yml |
3、编辑文件:docker-compose.yml,Nano 的保存并退出,按下 Ctrl+O,再按下 Enter。再按下 Ctrl+X。HTTP & HTTPS 都是使用预设值。Post 81 用于 Admin 页面,让我们能设置 Laravel Ssil 的 Proxy。假如你的项目数量不多的话,使用 SQLite 已经足够了的。开发环境一般我都禁用 IPv6。保存接着就能启动容器了。如图3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: always ports: # Public HTTP Port: - '80:80' # Public HTTPS Port: - '443:443' # Admin Web Port: - '81:81' environment: # These are the settings to access your db DB_SQLITE_FILE: '/data/database.sqlite' # Uncomment this if IPv6 is not enabled on your host DISABLE_IPV6: 'true' volumes: - './data:/data' - './letsencrypt:/etc/letsencrypt' |
4、运行命令:docker-compose up -d ,报错:ERROR: yaml.scanner.ScannerError。最终决定还是使用 vi 重新编辑再保存。如图4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | wangqiang@DESKTOP-QLPK8QM:~/proxy-manager$ docker-compose up -d ERROR: yaml.scanner.ScannerError: while scanning for the next token found character '\t' that cannot start any token in "./docker-compose.yml", line 5, column 1 wangqiang@DESKTOP-QLPK8QM:~/proxy-manager$ vi docker-compose.yml wangqiang@DESKTOP-QLPK8QM:~/proxy-manager$ docker-compose up -d Creating network "proxy-manager_default" with the default driver Pulling app (jc21/nginx-proxy-manager:latest)... latest: Pulling from jc21/nginx-proxy-manager 72a69066d2fe: Pull complete 6aacc5ddb486: Pull complete e7c90551cea0: Pull complete f3fbe2c2c4ff: Pull complete 4437e5607361: Pull complete ac0af67384ba: Pull complete 70e9cf3ce040: Pull complete 20ca9bfa0d5d: Pull complete 3d5ed869606f: Pull complete 3d8d02d01e35: Pull complete eb6a6398e23f: Pull complete 44ce8be92956: Pull complete df1a765de003: Pull complete a59ede055db9: Pull complete 536e2fa9b52d: Pull complete a83af78253da: Pull complete 75e669cb8e7a: Pull complete 1dcb53004e40: Pull complete d96b3a386f37: Pull complete 59e305e29011: Pull complete 3bbeaee21d7f: Pull complete b65ab8da1424: Pull complete fac215856462: Pull complete 6aaf9d409d6a: Pull complete 09b699c9559f: Pull complete 0d0f50cd276a: Pull complete Digest: sha256:09316a7c425270f62600552d3d3115a2a98ea55397e26b43bdfd4b138f9a2ac2 Status: Downloaded newer image for jc21/nginx-proxy-manager:latest Creating proxy-manager_app_1 ... done wangqiang@DESKTOP-QLPK8QM:~/proxy-manager$ |
5、看到最后提示为绿色,表示容器创建成功。现在打开网址:http://localhost:81 。邮箱:admin@example.com 密码:changeme 。登录成功,如图5
6、创建 Laravel Sail 项目一,执行命令:curl -s https://laravel.build/sail-project-1 | bash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 | wangqiang@DESKTOP-QLPK8QM:/mnt$ cd e wangqiang@DESKTOP-QLPK8QM:/mnt/e$ cd wwwroot/ wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot$ curl -s https://laravel.build/sail-project-1 | bash _ _ | | | | | | __ _ _ __ __ ___ _____| | | | / _` | '__/ _` \ \ / / _ \ | | |___| (_| | | | (_| |\ V / __/ | |______\__,_|_| \__,_| \_/ \___|_| Warning: TTY mode requires /dev/tty to be read/writable. Creating a "laravel/laravel" project at "./sail-project-1" Installing laravel/laravel (v8.6.9) - Downloading laravel/laravel (v8.6.9) - Installing laravel/laravel (v8.6.9): Extracting archive Created project in /opt/sail-project-1 > @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.77.1) - 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.77.1) - 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.77.1): 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 sail-project-1 && ./vendor/bin/sail up wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot$ |
7、打开编辑器,编辑 .env 文件,将以下配置项加入。这些皆是 Sail 的预设服务,其端口不能够重复,且与其他容器也不能够重复。一般来说端口 49152 到 65535 都是闲置的能够使用。如图6
1 2 3 4 5 6 | APP_PORT=48080 FORWARD_DB_PORT=43306 FORWARD_REDIS_PORT=46379 FORWARD_MEILISEARCH_PORT=47700 FORWARD_MAILHOG_PORT=41025 FORWARD_MAILHOG_DASHBOARD_PORT=48025 |
8、进入目录:sail-project-1 ,执行命令:sail up -d。如图7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot$ cd sail-project-1/ wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/sail-project-1$ ls README.md bootstrap config package.json resources storage webpack.mix.js app composer.json database phpunit.xml routes tests artisan composer.lock docker-compose.yml public server.php vendor wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/sail-project-1$ wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/sail-project-1$ wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/sail-project-1$ alias sail='bash vendor/bin/sail' wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/sail-project-1$ sail up -d Creating network "sail-project-1_sail" with driver "bridge" Creating volume "sail-project-1_sailmysql" with local driver Creating volume "sail-project-1_sailredis" with local driver Creating volume "sail-project-1_sailmeilisearch" with local driver Creating sail-project-1_meilisearch_1 ... done Creating sail-project-1_selenium_1 ... done Creating sail-project-1_mysql_1 ... done Creating sail-project-1_mailhog_1 ... done Creating sail-project-1_redis_1 ... done Creating sail-project-1_laravel.test_1 ... done wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/sail-project-1$ |
9、第一个 Sail 项目启动完成。如图8
10、接着开始第二个 Sail 项目,执行命令:curl -s https://laravel.build/sail-project-2 | bash。步骤是一样的,只不过 .env 文件的内容有所差异。所有端口号全部加1,未报端口冲突错误。如图9
1 2 3 4 5 6 | APP_PORT=48081 FORWARD_DB_PORT=43307 FORWARD_REDIS_PORT=46380 FORWARD_MEILISEARCH_PORT=47701 FORWARD_MAILHOG_PORT=41026 FORWARD_MAILHOG_DASHBOARD_PORT=48026 |
1 2 3 4 5 6 7 8 | wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/sail-project-2$ sail up -d Creating network "sail-project-2_sail" with driver "bridge" Creating sail-project-2_redis_1 ... done Creating sail-project-2_mailhog_1 ... done Creating sail-project-2_meilisearch_1 ... done Creating sail-project-2_selenium_1 ... done Creating sail-project-2_mysql_1 ... done Creating sail-project-2_laravel.test_1 ... done |
11、在两个项目中,编辑视图文件,以未区分。http://localhost:48080/ 、http://localhost:48081/ 。如图10
12、现在分别设置两个项目的域名。编辑 C:/Windows/System32/Drivers/etc/hosts 文件,指定 IP 与域名之间的映射关系。
1 2 | 127.0.0.1 sail-project-1.test 127.0.0.1 sail-project-2.test |
13、打开 Nginx Proxy Manager ,Hosts – Proxy Hosts – Add Proxy Host。如图11
14、添加完毕
15、分别打开:http://sail-project-1.test 、http://sail-project-2.test ,如图12
16、从本地宿主机连接到 MySQL 数据库,可以直接通过 127.0.0.1 和 43306 端口连接到 MySQL 数据库容器。如图13
近期评论