如何创建适配PHP8.1/8.2的Docker容器并部署Laravel 10
解决方案:用Docker搭建独立的Laravel 10开发环境
完全可行,Docker的环境隔离特性刚好能满足你同时维护不同PHP版本Laravel项目的需求,不用改动本地XAMPP配置。下面是具体操作步骤:
1. 新建项目目录
在本地任意位置创建一个独立文件夹(比如laravel10-docker),后续所有操作都在这个目录下进行。
2. 编写Docker Compose配置文件
在项目根目录创建docker-compose.yml文件,定义PHP、Nginx、MySQL(可选)的服务配置:
version: '3.8' services: # PHP服务(适配Laravel 10要求的8.1版本) php: build: context: . dockerfile: Dockerfile.php volumes: - ./src:/var/www/html working_dir: /var/www/html # Nginx服务(处理HTTP请求转发) nginx: image: nginx:alpine ports: - "8080:80" volumes: - ./src:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - php # MySQL数据库服务(Laravel项目需要数据库时启用) mysql: image: mysql:8.0 environment: MYSQL_DATABASE: laravel10 MYSQL_ROOT_PASSWORD: root MYSQL_USER: laravel MYSQL_PASSWORD: laravel volumes: - mysql-data:/var/lib/mysql ports: - "3307:3306" volumes: mysql-data:
3. 编写PHP扩展安装脚本
在项目根目录创建Dockerfile.php,用来安装Laravel 10依赖的PHP扩展及Composer:
FROM php:8.1-fpm-alpine # 安装系统依赖和PHP扩展 RUN apk add --no-cache \ git \ curl \ libpng-dev \ libjpeg-turbo-dev \ libwebp-dev \ zlib-dev \ libzip-dev \ && docker-php-ext-configure gd --with-jpeg --with-webp \ && docker-php-ext-install gd pdo_mysql zip # 安装最新版Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
4. 配置Nginx反向代理
在项目根目录创建nginx文件夹,里面新建default.conf文件:
server { listen 80; server_name localhost; root /var/www/html/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
5. 构建并启动容器
打开终端进入项目根目录,执行以下命令启动所有服务:
docker-compose up -d --build
6. 在容器内安装Laravel 10
执行命令进入PHP容器:
docker-compose exec php bash
进入容器后,运行Composer命令创建Laravel 10项目:
composer create-project laravel/laravel . "10.*"
安装完成后输入exit退出容器。
7. 配置Laravel环境
进入本地src文件夹,复制.env.example为.env,修改数据库配置项:
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=laravel10 DB_USERNAME=laravel DB_PASSWORD=laravel
然后执行容器内的Artisan命令生成应用密钥:
docker-compose exec php php artisan key:generate
8. 访问Laravel项目
在浏览器中访问http://localhost:8080,即可看到Laravel 10的欢迎页面。
日常开发注意事项
- 所有Laravel相关命令(如
artisan、composer)都需要通过容器执行,示例:docker-compose exec php php artisan migrate docker-compose exec php composer require package-name - 本地
src文件夹就是Laravel项目根目录,直接用本地编辑器修改代码,容器内会实时同步。 - 停止容器用
docker-compose down,重启用docker-compose restart。
内容的提问来源于stack exchange,提问作者fahico98
相关产品推荐
相关产品推荐

