docker laravel部署
时间: 2025-07-05 11:07:18 浏览: 14
在 Docker 环境中部署 Laravel 应用程序可以通过多种方式实现,其中一种常见方法是使用 `Dockerfile` 和 `docker-compose.yml` 文件来构建和运行容器化应用。以下是一个详细的步骤指南:
### 构建 Laravel 应用的 Docker 镜像
1. **创建 Dockerfile**
在 Laravel 项目的根目录下创建一个 `Dockerfile`,用于定义镜像的构建过程。以下是一个基于 Apache 的基础镜像示例:
```dockerfile
# 使用官方的 PHP 镜像作为基础镜像
FROM php:8.1-apache
# 安装必要的扩展
RUN docker-php-ext-install pdo_mysql
# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 将本地代码复制到容器中
COPY . /var/www/html
# 安装依赖
WORKDIR /var/www/html
RUN composer install --no-scripts
```
2. **构建镜像**
在项目根目录下执行以下命令来构建 Docker 镜像:
```bash
docker build -t your-laravel-app .
```
这里的 `your-laravel-app` 是你为镜像指定的标签名称,可以根据需要自定义。
3. **运行容器**
构建完成后,使用以下命令启动容器:
```bash
docker run -d -p 8080:80 --name laravel-container your-laravel-app
```
这将把容器的 80 端口映射到主机的 8080 端口,并命名为 `laravel-container`。
### 使用 Docker Compose 管理服务
为了更方便地管理多个服务(如数据库、缓存等),可以使用 `docker-compose.yml` 文件。以下是一个简单的示例配置:
1. **创建 docker-compose.yml 文件**
在项目根目录下创建 `docker-compose.yml` 文件,并添加如下内容:
```yaml
version: '3'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- .:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
```
2. **启动服务**
执行以下命令启动所有服务:
```bash
docker-compose up -d
```
这将启动 Web 服务和 MySQL 数据库服务。
3. **访问应用**
浏览器中打开 `http://localhost:8080` 即可访问你的 Laravel 应用。
### 其他注意事项
- **环境变量配置**
Laravel 的 `.env` 文件需要根据 Docker 环境进行调整。例如,数据库连接应指向 `db` 服务(即 `DB_HOST=db`)。
- **数据持久化**
通过 Docker 卷(volumes)可以确保数据库数据不会因容器停止而丢失。上述 `docker-compose.yml` 已经包含了 MySQL 数据卷的配置。
- **Artisan 命令**
如果需要在容器内运行 Artisan 命令,可以使用别名或直接进入容器执行:
```bash
docker exec -it laravel-container php /var/www/html/artisan migrate
```
- **日志与调试**
可以通过 `docker logs` 查看容器的日志输出:
```bash
docker logs laravel-container
```
以上步骤涵盖了从构建镜像到运行容器的基本流程,并结合了常见的开发需求(如数据库集成)。如果需要进一步优化或扩展功能,可以参考更多高级用法[^5]。
---
阅读全文
相关推荐
















