Home >> Blog >> Laradock - 快速入門 Laravel + Docker 教學

Laradock - 快速入門 Laravel + Docker 教學

簡而言之,Laradock 是一套由社群整合的 dockerised 軟體。本快速教學將為您提供有關如何開始使用 Laradock 的快速概述。

Laradock 快速入門(Laravel + Docker)教學

先決條件

  • git、laravel、docker和docker-compose的工作知識
  • 安裝 docker 引擎 + docker compose

如果您是 Docker 新手,請隨時查看我的其他教學:

Laradock VS Laravel 宅基地

Laradock 是 Laravel Homestead 的 Docker 版本。雖然這兩種工具都可以提供強大的開發環境,但 Laradock 提供了以下好處:

輕量級和可擴展

  • 與宅基地不同,Laradock 將所有軟體拆分為可隔離的 docker 容器。您只需安裝/運行必要的東西,而不是將所有東西都集中到一台虛擬機中。

    與主機共享內核

  • 在幾秒鐘而不是幾分鐘內啟動開發環境!共享內核顯著減少了資源消耗並為您提供高性能環境。

    生產友好

  • 是的,這是正確的。Laradock 可以用於開發或生產。

    它只是工作!

  • 是的,一旦您構建了 docker 映像,您就可以放心,無論您的機器類型如何,docker 容器都可以在任何地方工作。

關鍵概念

每個 Laradock 文件夾都是社群添加的 dockerised 軟體。您可以選擇要使用哪個軟體來運行您的應用程序。我將介紹運行 Laravel 應用程序所需的基本容器。

工作區容器

這是你運行大部分 CLI 命令的地方,例如 bash 命令、php artisan 命令、composer install、yarn/npm 等。你可以使用這個容器作為與你的應用程序交互的地方

PHP-FPM 容器

這是所有 PHP 腳本運行的地方。確保在此處安裝所有軟體/PHP 擴展,而不是在工作區容器中。

Nginx / Apache 容器

我們的網絡伺服器。這與我們的 PHP 應用程序是隔離的,僅用於處理 Web 請求。您可以分別在他們的文件夾中找到配置文件。

MySQL 容器

同樣,這是與其他容器隔離的。默認情況下,數據存儲在~/.laradock/data主機的文件夾中。.env您可以在文件中更改此位置。

安裝

  1. 安裝 Laravel 的新副本並將 Laradock 添加為子模塊。 官方 Laradock 的 github:https ://github.com/LaraDock/laradock
  2. 您應該會看到一個 laradock 文件夾出現在您的項目根目錄中。這是一個大文件夾,所以請保持冷靜,不要不知所措!
    Laradock 快速入門(Laravel + Docker)教學
  3. .env 文件

    打開 laradock 文件夾中的 .env 文件。該文件包含容器所需的大部分配置,例如 PHP 版本、數據庫路徑等。確保自定義環境變量以適合您的用例。需要關注的關鍵變量是:

    .APP_CODE_PATH_CONTAINER

    .DATA_PATH_HOST(確保主機中存在路徑)

    .COMPOSE_PROJECT_NAME

    .以及容器的軟體版本

  4. 設置網絡伺服器。

    我正在使用 Nginx,但如果您願意,可以隨意使用 Apache。

    .轉到 laradock > nginx > sites Laradock 會將此文件夾烘焙到 docker 映像中。因此,每次在此處進行更改時,都需要重新構建映像。

    .複製 laravel.conf.example 並將其重命名為your-app.conf

    .將伺服器名稱更改為您應用的域。(如果尚未在主機文件中添加域,請記住添加域)

    .conf 文件應如下所示:

server {

listen 80;
listen [::]:80;

# For https
listen 443 ssl;
listen [::]:443 ssl ;
ssl_certificate /etc/nginx/ssl/default.crt;
ssl_certificate_key /etc/nginx/ssl/default.key;

server_name my-app.dev.local;
# app root path should align with what you defined in the
# APP_CODE_PATH_CONTAINER env variable.
root /var/www/my-app/current/public;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}

location /.well-known/acme-challenge/ {
root /var/www/letsencrypt/;
log_not_found off;
}

error_log /var/log/nginx/laravel_error.log;
access_log /var/log/nginx/laravel_access.log;
}

讓我們啟動應用程序

運行以下命令來構建我們的鏡像:

docker-compose build workspace php-fpm nginx mysql

啟動容器:

docker-compose up -d nginx mysql

注意:-d 標誌會將容器作為守護進程運行,即在後台運行

the

to

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker

docker