Windows 10 搭建 Laravel Sail 開發環境 (超詳細操作)

koala發表於2021-05-16

前言

分享自己成功搭建 Laravel Sail 環境的方法和步驟 ,雖然官方文件 描述的 比較詳細,但是操作下來總會有官方文件沒有出現的問題,同時也是給沒有搭建過 Laravel Sail 新手的文件補充。

PS: 按照我文件從頭往下操作,成功率可能達到 99.999%。

#1 Window 系統

Laravel Sail 要求支援 WSL 2 的 Windows 10 系統。

在 2020 年五月份釋出的 2004 版本才支援 WSL 2 功能,所以我們的系統需更新到等於或大於 2004 版本。

window 10 升級操作 忽略……

系統升級完成之後,搜尋開啟 Windows 功能管理 視窗,確保下圖箭頭的兩個地方都已開啟:

將 WSL 2 設定為預設版本

開啟 PowerShell,然後在安裝新的 Linux 發行版時執行以下命令,將 WSL 2 設定為預設版本:

wsl --set-default-version 2

如果執行上面命令彈出以下內容,需要更新核心包, 下載連結 :docs.microsoft.com/zh-cn/windows/w...

WSL 2 需要更新其核心元件。有關資訊,請訪問 https://aka.ms/wsl2kernel

#2 安裝軟體

安裝 Windows Terminal

為了更好地訪問 Windows 的子系統,推薦使用 Windows Terminal 作為命令列工具。

開啟微軟商店,搜尋關鍵字 Windows Terminal ,在搜尋結果中點選安裝即可:

先下好,後面我再講如何使用。

下載 VSCode

開啟 code.visualstudio.com/download ,選擇 Windows 版本的 VSCode 進行下載並安裝,此處不再贅述。

先安裝好,後面我再講如何使用。

安裝 Ubuntu

接下來下載和安裝子系統 —— Ubuntu 。

開啟微軟商店,搜尋關鍵詞 Ubuntu,第一和第二個都可以:

在安裝過程中輸入密碼即可完成 Ubuntu 子系統的安裝 ,這個 Ubuntu 為當前 Windows 系統的子系統,接下來我們的 Docker 會基於此係統執行。

開啟 Windows Terminal ,就會看到我們安裝的系統

在系統裡面, /mnt/ 對映 window 的 C、D盤

安裝 Docker Desktop

1.下載並安裝

前往 Docker 官網下載 Docker Desktop ,下載完成後點選安裝包安裝,一直下一步即可。

2.開啟 WSL2 模式

安裝完成後執行程式,進入配置頁面,開啟 WSL2 模式:

同時這個地方也需要設定,選擇我們上一步安裝的 Ubuntu 系統,然後點選右下方的按鈕應用修改:

3.Docker Hub 映象加速

國內從 Docker Hub 拉取映象有時會遇到困難,此時可以配置映象加速器。國內很多雲服務商都提供了國內加速器服務,例如:

由於映象服務可能出現當機,建議同時配置多個映象。各個映象站測試結果請到 docker-practice/docker-registry-cn-mirror-test 檢視。

我們以 網易雲 映象服務 https://hub-mirror.c.163.com 為例進行介紹。

進入 Docker Engine 裡,黏貼上面的程式碼,如下:

最後點選 Apply & Restart ,進行重啟,一般需要耗費一兩分鐘。

#3 建立測試專案

Ubuntu 作為 Windows 子系統,可以訪問到主系統下的硬碟。

為了方便管理程式碼,我在 E 盤下建立了 Code 目錄:

$ cd /mnt/e
$ mkdir Code
$ cd Code

進入此目錄後,使用以下命令進行建立一個測試的 Laravel 專案:

$ curl -s https://laravel.build/example-app | bash

安裝過程中,可能會有卡頓,需耐心等待。

最終建立成功的介面:

Windows Terminal 工具很好的整合了 VSCode,我們可以在命令列中直接開啟編輯器:

$ cd example-app/
$ code .

VSCode 會在當前目錄開啟,然後修改 Dockerfile 檔案

Laravel 8 預設用的是 vendor/laravel/sail/runtimes/8.0 目錄下的 Dockerfile,本文將以此來講解。7.4 或其他版本與此類似。

1. 加速 Linux 更新

新建檔案,內容如下:

vendor/laravel/sail/runtimes/8.0/sources.list

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

RUN apt-get update 之前,新增 ADD 命令:

vendor/laravel/sail/runtimes/8.0/Dockerfile

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ADD sources.list /etc/apt/

2. Ubuntu PPA 加速

在 vendor/laravel/sail/runtimes/8.0/Dockerfile 檔案中,搜尋並將:

http://ppa.launchpad.net

替換為:

https://launchpad.proxy.ustclug.org

這是中國科學技術大學開源軟體提供的映象。

3.下載 Composer 可執行檔案

在 vendor/laravel/sail/runtimes/8.0/Dockerfile 檔案中,搜尋以下這一行:

    && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \

替換為:

    && curl -so /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar \
    && chmod a+x /usr/bin/composer \
    && composer --version \

這是從阿里雲映象上下載。

4. Node 二進位制檔案下載#

Node 二進位制檔案下載是以下這一行程式碼:

    && curl -sL https://deb.nodesource.com/setup_15.x | bash - \

目前沒有好的加速通道,安裝時可能會卡住這裡,多嘗試幾次。

5.執行容器

在專案的根目錄下,執行以下命令:

$ ./vendor/bin/sail up

第一次執行的時候,會初始化容器,有了上面的我們對 Dockerfile 的定製,應該會比較順利。

注意 sail up 命令執行成功後,會一直顯示軟體的實時日誌介面:

此時你可以 ctrl+c 中斷執行,再次執行時,可以使用 -d 引數讓 sail up 命令在後臺執行:

./vendor/bin/sail up -d

擴充套件知識:d 為 Deamon 的簡寫。Daemon 程式,又稱為守護程式,通常在系統後臺長時間執行。

最後勞動成果:

#4 問題處理

問題1:

> failed to fetch http://......  
>
> ERROR: Service 'laravel.test' failed to build

原因:映象源的問題,要更換映象源

之前在搭建環境的時候,已經對 Laravel Sail 的映象源定製過,所以更換起來很簡單。
之前定義映象源地址的檔案是:
vendor/laravel/sail/runtimes/8.0/sources.list

解決辦法:

更換為中科大的映象源

deb http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

問題2:

> Ports are not available: listen tcp 0.0.0.0:80:bind: An attempt was made to access a socket in a way forbidden by its access permissions.

原因:Window 10 中 80 埠被佔用了,一般是 IIS 佔用

解決辦法:

  1. win+R ,輸入 services.msc 彈出服務,

  2. 找到 World Wide Web Publishing Service ,雙擊開啟後,將啟動型別改為手動,更改服務狀態為 “停止

參考資料:

適用於 Linux 的 Windows 子系統安裝指南

搭建 Laravel Sail 開發環境 - Windows

docker 報錯埠被佔用 sqlserver 佔用80埠

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章