如何與Docker建立Laravel?
使用Composer 容器創建Laravel 項目;2. 編寫包含PHP 擴展和Apache 配置的Dockerfile;3. 通過docker-compose.yml 定義app、MySQL 和phpMyAdmin 服務;4. 配置Apache 虛擬主機支持Laravel 路由;5. 更新.env 文件設置數據庫連接;6. 運行docker-compose up -d --build 啟動容器;7. 在容器中執行Composer 安裝和密鑰生成;8. 可選運行遷移;9. 開發時使用docker-compose exec 執行Artisan 命令,代碼實時同步,修改Dockerfile 後需重建鏡像,最終實現Laravel 在Docker 中的本地開發環境部署。
Setting up Laravel with Docker isn't complicated once you understand the basics of containers and how to structure your services. Here's a practical guide to get a Laravel project running in Docker using Docker Compose
.

✅ 1. Create a New Laravel Project (or Use Existing One)
If you're starting fresh, use Composer via Docker to create the Laravel app:
docker run --rm -v $(pwd):/app composer create-project --prefer-dist laravel/laravel my-laravel-app
Replace my-laravel-app
with your project name. This avoids needing Composer installed locally.

Now navigate into your project:
cd my-laravel-app
✅ 2. Create the Dockerfile
Create a Dockerfile
in the project root to define the PHP environment:

# Use PHP 8.3 with Apache (you can use Nginx too) FROM php:8.3-apache # Install system dependencies RUN apt-get update && apt-get install -y \ git \ curl \ libpng-dev \ libonig-dev \ libxml2-dev \ zip \ unzip # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd # Install Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # Set working directory WORKDIR /var/www/html # Copy existing application code COPY . /var/www/html/ # Copy Apache vhost config COPY .docker/vhost.conf /etc/apache2/sites-available/000-default.conf # Enable mod_rewrite for Laravel routes RUN a2enmod rewrite # Fix permissions RUN chown -R www-data:www-data /var/www/html
✅ 3. Set Up Docker Compose
Create a docker-compose.yml
file in the root:
version: '3.8' services: app: build: context: . dockerfile: Dockerfile ports: - "8000:80" environment: - APACHE_RUN_USER=www-data - APACHE_RUN_GROUP=www-data volumes: - .:/var/www/html depends_on: - db db: image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_DATABASE: laravel MYSQL_ROOT_PASSWORD: rootpassword MYSQL_USER: laravel_user MYSQL_PASSWORD: laravel_password ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql phpmyadmin: image: phpmyadmin/phpmyadmin ports: - "8080:80" environment: PMA_HOST: db PMA_USER: laravel_user PMA_PASSWORD: laravel_password depends_on: - db volumes: mysql_data:
Optional: Remove
phpmyadmin
if you don't need it.
✅ 4. Configure Apache Virtual Host
Create a .docker/vhost.conf
file:
<VirtualHost *:80> ServerName localhost DocumentRoot /var/www/html/public <Directory /var/www/html/public> AllowOverride All Require all granted Options Indexes FollowSymLinks </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
This enables .htaccess
and mod_rewrite
for Laravel's routing.
✅ 5. Update Laravel Environment
Edit your .env
file (create it from .env.example
):
APP_NAME=Laravel APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost:8000 DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel_user DB_PASSWORD=laravel_password
Note: DB_HOST=db
matches the service name in docker-compose.yml
.
✅ 6. Build and Run Containers
Run this command in your terminal:
docker-compose up -d --build
This builds the app container, starts MySQL and phpMyAdmin.
✅ 7. Install Laravel Dependencies & Generate Key
Run Composer install and generate the app key inside the container:
docker-compose exec app composer install docker-compose exec app php artisan key:generate docker-compose exec app php artisan config:cache
✅ 8. Run Migrations (Optional)
Apply Laravel migrations:
docker-compose exec app php artisan migrate
You can now access:
- Laravel app:
http://localhost:8000
- phpMyAdmin:
http://localhost:8080
(optional)
✅ 9. Development Tips
- Your code is mounted via volume, so local changes reflect instantly.
- For Artisan commands, always use:
docker-compose exec app php artisan <command>
- If you add PHP extensions or change the
Dockerfile
, rebuild:docker-compose build app
✅ Final Notes
This setup gives you:
- Laravel running on Apache PHP
- MySQL database
- Optional GUI via phpMyAdmin
- Full Docker isolation
You can swap Apache for Nginx PHP-FPM for production, but this is perfect for local development.
Basically, just keep your
.env
,Dockerfile
, anddocker-compose.yml
in sync — and you're good to go.以上是如何與Docker建立Laravel?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在Laravel中添加自定義驗證規則的方法有三種:使用閉包、Rule類和表單請求。 1.使用閉包適合輕量級驗證,如阻止用戶名為"admin";2.創建Rule類(如ValidUsernameRule)使復雜邏輯更清晰可維護;3.在表單請求中整合多個規則並集中管理驗證邏輯,同時可通過自定義messages方法或傳入錯誤信息數組來設置提示語,從而提升靈活性和可維護性。

Laravel應用實現多語言支持的核心方法包括:設置語言文件、動態切換語言、翻譯URL路由及管理Blade模板中的翻譯鍵。首先,將各語言字符串組織在/resources/lang目錄下的對應文件夾(如en、es、fr)中,並通過返回關聯數組定義翻譯內容;2.通過\_\_()輔助函數調用翻譯鍵值,並使用App::setLocale()結合會話或路由參數實現語言切換;3.對於翻譯URL,可通過帶前綴的路由組分別為不同語言定義路徑,或動態映射語言文件中的路由別名;4.在Blade模板中保持翻譯鍵簡潔並

toworkeffectivelywithpivottablesinlaravel,firstAccessPivotDatausingwithPivot()orwithTimestamps(),thenupdateentrieswithupdatee XistingPivot(),ManageraliationShipsviadeTach()andsync(),andusecustompivotModelSwhenNeed.1.UseWithPivot()toincludespecificcol

laravelProvidesLeanAndFlexibleWayTosendificationsViamultiplipliplipliplikeMail,SMS,In-Appalerts,and-Appalerts,andPushNotifications.youdefineNotificationChannelsinthelsinthevia()MethodofanotificationClass,andimpecificementpecificementpecificementpecificemmethodssliketomail()

ServiceProvider是Laravel框架中用於註冊服務和初始化邏輯的核心機制,通過Artisan命令可創建自定義ServiceProvider;1.register方法用於綁定服務、註冊單例、設置別名等操作,不可調用尚未加載的其他服務;2.boot方法在所有服務註冊完成後運行,用於註冊事件監聽器、視圖合成器、中間件等依賴其他服務的邏輯;常見用途包括綁定接口與實現、註冊Facade、加載配置、註冊命令行指令和視圖組件;建議集中相關綁定於一個ServiceProvider中管理,並註意註冊

在Laravel應用中處理異常和記錄錯誤的核心方法包括:1.利用App\Exceptions\Handler類集中管理未處理異常,通過report()方法記錄或通知異常信息,例如發送Slack通知;2.使用Monolog配置日誌系統,在config/logging.php中設置日誌級別與輸出方式,並在生產環境中啟用error及以上級別日誌,同時可在report()中結合上下文手動記錄詳細異常信息;3.自定義render()方法以返回統一的JSON格式錯誤響應,提升API前後端協作效率。這些步驟確

Laravel性能優化可通過四個核心方向提升應用效率。 1.使用緩存機制減少重複查詢,通過Cache::remember()等方法存儲不常變化的數據,降低數據庫訪問頻率;2.從模型到查詢語句進行數據庫優化,避免N 1查詢、指定字段查詢、添加索引、分頁處理及讀寫分離,減少瓶頸;3.將耗時操作如郵件發送、文件導出放入隊列異步處理,利用Supervisor管理工作者並設置重試機制;4.合理使用中間件與服務提供者,避免複雜邏輯和不必要的初始化代碼,延遲加載服務以提升啟動效率。

依賴注入在Laravel中通過服務容器自動處理類的依賴關係,無需手動new對象。其核心是構造函數注入和方法注入,如控制器中自動傳入Request實例。 Laravel通過類型提示解析依賴,遞歸創建所需對象。綁定接口與實現可通過服務提供者使用bind方法,或singleton綁定單例。使用時需確保類型提示、避免構造函數複雜化、謹慎使用上下文綁定,並理解自動解析規則。掌握這些可提升代碼靈活性與維護性。
