# 如何使用Docker搭建Laravel本地環境
## 前言
在現代Web開發中,Docker已成為構建標準化開發環境的利器。對于Laravel開發者而言,使用Docker可以快速搭建包含PHP、MySQL、Redis等服務的完整環境,避免"在我機器上能運行"的經典問題。本文將詳細介紹如何通過Docker Compose搭建Laravel本地開發環境。
## 環境準備
在開始之前,請確保你的系統已安裝以下工具:
- Docker Desktop([Windows/Mac](https://www.docker.com/products/docker-desktop))
- Git(可選,用于克隆Laravel項目)
- 終端工具(Windows用戶推薦使用Git Bash)
驗證Docker安裝:
```bash
docker --version
docker-compose --version
建議采用以下目錄結構:
/laravel-docker
├── docker-compose.yml
├── php/
│ └── Dockerfile
├── nginx/
│ ├── nginx.conf
│ └── sites/
│ └── laravel.conf
├── mysql/
│ └── my.cnf
└── src/(Laravel項目代碼)
version: '3.8'
services:
# PHP服務
app:
build:
context: ./php
dockerfile: Dockerfile
volumes:
- ./src:/var/www/html
networks:
- laravel-network
# Web服務器
webserver:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx/sites:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
networks:
- laravel-network
# 數據庫
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: rootsecret
volumes:
- mysql_data:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
ports:
- "3306:3306"
networks:
- laravel-network
# Redis緩存
redis:
image: redis:alpine
ports:
- "6379:6379"
networks:
- laravel-network
volumes:
mysql_data:
driver: local
networks:
laravel-network:
driver: bridge
FROM php:8.1-fpm
# 安裝系統依賴
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# 清除緩存
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# 安裝PHP擴展
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# 安裝Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 設置工作目錄
WORKDIR /var/www/html
nginx/sites/laravel.conf
:
server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
docker-compose up -d db redis
docker-compose run --rm app composer create-project laravel/laravel src
docker-compose run --rm app chmod -R 777 src/storage src/bootstrap/cache
.env
文件:DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secret
REDIS_HOST=redis
docker-compose up -d
訪問 http://localhost:8080 應該能看到Laravel歡迎頁面。
運行數據庫遷移測試:
docker-compose exec app php artisan migrate
docker-compose exec app bash
docker-compose ps
docker-compose down
docker-compose up -d --build
docker-compose.yml
中的端口映射docker-compose logs [服務名]
通過Docker搭建的Laravel環境具有高度可移植性和一致性,團隊成員可以快速共享相同的開發環境。后續可以進一步優化Docker配置,或將其集成到CI/CD流程中。
提示:本文配置適用于開發環境,生產環境需要額外考慮安全性和性能優化。 “`
這篇文章提供了從零開始搭建Laravel Docker環境的完整指南,包含詳細的配置示例和實用命令。您可以根據實際需求調整PHP版本、數據庫類型等配置參數。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。