iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
Modern Web

Laravel 實務筆記系列 第 2

啟動專案 (Docker)

啟動 Laravel 專案前的環境設置還是挺麻煩的,不過目前 Laravel 官方指南的安裝方式變成用 Laravel Sail 直接建立一個 Docker ,就不用那麼傷腦筋了,理論上。

Sail

https://github.com/laravel/sail

Laravel Sail 會建立包含資料庫在內的 Laravel 環境容器,並且讓我們可以直接由指令視窗操作容器中的 Laravel 專案。

快速安裝

指令

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

在 Linux 跟 MacOS 下可以直接使用著個指令,不過在 windows 要藉由 WSL (Windows Subsystem Linux) 執行。

如果指令正確執行的話會做幾件事:

  • 下載 laravelsail/php80-composer 這個 docker image
  • 藉由 php80-composer 建立 example-app 專案,並安裝 Sail

example-app 是專案目錄的名稱,可以替換

順利的話等他跑完就可以進到專案中執行 Sail

cd example-app
./vendor/bin/sail up

而我就是特別不順利的那個,在 Windows 底下嘗試安裝時撞了好多牆 (大多是 WSL 的問題),這邊記錄一下

Windows 環境設置

安裝 WSL

直接參考官方文件,蠻詳細的。

安裝 Docker Desktop

官方文件

這邊要特別注意步驟 3 跟 4 ,要設定 Docker 可被 WSL 取用才能夠在 WSL 中使用 Docker 的指令。

錯誤: docker is not connected

在進入 Ubuntu 試圖執行 Docker 指令時可能會出現的錯誤。

首先確定上面安裝 Docker 時有設定可被 WSL 取用。

另外我遇到的是安裝 Microsoft Store 中的 Ubuntu 時不管怎麼設定都連不上 Docker,後來是改用 Ubuntu 20.04 LTS 才成功連上

錯誤: invalid character 'u' looking for beginning of value

執行創建專案指令時可能發生。

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

問題發生在安裝腳本上,可以試著開啟連結 https://laravel.build/example-app ,可以看到腳本內容。

docker info > /dev/null 2>&1

# Ensure that Docker is running...
if [ $? -ne 0 ]; then
    echo "Docker is not running."

    exit 1
fi

docker run --rm \
    -v $(pwd):/opt \
    -w /opt \
    laravelsail/php80-composer:latest \
    bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium"

cd example-app

CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
WHITE='\033[1;37m'
NC='\033[0m'

echo ""

if sudo -n true 2>/dev/null; then
    sudo chown -R $USER: .
    echo -e "${WHITE}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
    echo -e "${WHITE}Please provide your password so we can make some final adjustments to your application's permissions.${NC}"
    echo ""
    sudo chown -R $USER: .
    echo ""
    echo -e "${WHITE}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi

這邊確認起來應該是因為 11~14 行的指令有退行,導致 Docker 無法執行。

解決辦法就是複製這份腳本到本地,把退行刪掉,然後手動執行 bash。
需要改專案名稱的話就手動替換掉腳本內的 example-app

Compoer Update Dependencies 後 Killed 中斷

成功執行腳本後開始建立 Laravel 專案, Composer 卻安裝不了套件。

原因: WSL 記憶體不足。

找到 .wslconfig,一般放在 C:\Users\<使用者> 底下

// .wslconfig
[wsl2]
memory=128GB  //將記憶體改大
swap=0
localhostForwarding=true

可以視需求調整分配給 WSL 的記憶體,我是拉到超大讓 WSL 可取用所有記憶體。

專案初始畫面

故障都排除的話 sail up 指令可以成功執行,就會開始容器的建置,第一次建置會跑比較久一些。

當 sail up 的指令跑完之後可以到 Chrome 網址輸入 locahost ,就能看到 Laravel 預設專案的歡迎畫面。

References

Laravel Installation

上一篇
前言
下一篇
使用 VS code 開發
系列文
Laravel 實務筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言