使用構建好的 Docker 映象來搭建 Laravel Sail 開發環境,解決 Laravel Sail 映象構建失敗的問題

myhui0926發表於2021-11-15

背景

最近有很多小夥伴給我留言,說按照教程《將 Laravel 開發環境由 Homestead 遷移到 Laravel Sail ( Docker ) 完整詳細教程
搭建 Laravel Sail 開發環境時總是構建映象失敗。其實構建映象失敗的主要原因就是國內的網路問題,這給剛學習 Laravel Sail 開發環境搭建的小白帶來了“巨大的”挑戰,所以我將本地構建好的 Sail 映象共享到了百度網盤上,大家直接從百度網盤下載構建好的 Laravel Sail 映象匯入 Docker Desktop 裡面,然後從匯入的映象來構建開發環境就可以了。當然,為了下載速度快一些,你可能要給百度網盤充點錢錢。:blush:

映象地址

連結: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 映象來搭建 Laravel Sail 開發環境

編輯 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 ) 完整詳細教程》構建映象並啟動容器及後續章節。

其他

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

相關文章