背景
最近有很多小夥伴給我留言,說按照教程《將 Laravel 開發環境由 Homestead 遷移到 Laravel Sail ( Docker ) 完整詳細教程
》搭建 Laravel Sail 開發環境時總是構建映象失敗。其實構建映象失敗的主要原因就是國內的網路問題,這給剛學習 Laravel Sail 開發環境搭建的小白帶來了“巨大的”挑戰,所以我將本地構建好的 Sail 映象共享到了百度網盤上,大家直接從百度網盤下載構建好的 Laravel Sail 映象匯入 Docker Desktop 裡面,然後從匯入的映象來構建開發環境就可以了。當然,為了下載速度快一些,你可能要給百度網盤充點錢錢。
映象地址
連結:pan.baidu.com/s/1FKXRZWZYhPjnY2mwX...
提取碼:b7br
映象列表:
- sail-7.4.tar (適用於基於 php7.4 開發的專案)
- sail-8.0.tar (適用於基於 php8.0 開發的專案)
- sail-8.0-octane.tar (適用於基於 php8.0 開發且由 laravel octane 驅動的專案)
基礎環境準備
- 開啟 wsl2
- 安裝 Ubuntu 子系統
- 安裝 Docker Desktop 並讓 Docker Desktop 基於 wsl2 來執行
搭建步驟
安裝 Laravel Sail
請參照《將 Laravel 開發環境由 Homestead 遷移到 Laravel Sail ( Docker ) 完整詳細教程》
中 釋出 Dockerfile 以便定製
這一步驟之前的步驟。因為我們使用從百度網盤下載的映象來構建開發環境,所以不需要我們重新定製 Dockerfile 來構建映象了。
下載並匯入 Laravel Sail 映象
從上面我分享的映象中,選擇你需要的映象下載到本地電腦。這裡假設我需要的是 sail-8.0.tar,我的映象下載到了/mnt/c/sail-8.0.tar
這個路徑裡面。
首先匯入映象:
$ docker load < /mnt/c/sail-8.0.tar
檢視匯入的映象:
$ docker image ls
執行結果如下:
編輯 docker-compose.yml 檔案,編排映象。
將你的服務配置中的build
選項刪除,因為我們已經匯入了映象,不需要構建了。編輯後的配置檔案如下:
# For more information: https://learnku.com/docs/laravel/sail
version: '3'
services:
your-service.test:
image: sail-8.0/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
mysql:
image: 'mysql:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailmysql:/var/lib/mysql'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sailredis:/data'
networks:
- sail
healthcheck:
test: ["CMD", "redis-cli", "ping"]
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sailmysql:
driver: local
sailredis:
driver: local
啟動服務
./vendor/bin/sail up
後續步驟
後續步驟請檢視《將 Laravel 開發環境由 Homestead 遷移到 Laravel Sail ( Docker ) 完整詳細教程》 中構建映象並啟動容器
及後續章節。
其他
- 將新專案接入Laravel Sail 建立好的MySQL、Redis容器,並實現自己的 sail 指令碼與容器互動
- Laravel 中文文件之 Sail 開發環境
- 搭建 Laravel Sail 開發環境 - Windows
本作品採用《CC 協議》,轉載必須註明作者和本文連結