前言
分享自己成功搭建 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 拉取映象有時會遇到困難,此時可以配置映象加速器。國內很多雲服務商都提供了國內加速器服務,例如:
網易雲加速器 hub-mirror.c.163.com
百度雲加速器 mirror.baidubce.com
由於映象服務可能出現當機,建議同時配置多個映象。各個映象站測試結果請到 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 佔用
解決辦法:
win+R ,輸入 services.msc 彈出服務,
找到 World Wide Web Publishing Service ,雙擊開啟後,將啟動型別改為手動,更改服務狀態為 “停止”
參考資料:
本作品採用《CC 協議》,轉載必須註明作者和本文連結