如何使用Docker搭建Laravel本地环境

发布时间:2022-03-30 15:47:49 作者:iii
来源:亿速云 阅读:352
# 如何使用Docker搭建Laravel本地环境

## 前言

在现代Web开发中,Docker已成为构建标准化开发环境的利器。对于Laravel开发者而言,使用Docker可以快速搭建包含PHP、MySQLRedis等服务的完整环境,避免"在我机器上能运行"的经典问题。本文将详细介绍如何通过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项目代码)

配置Docker服务

1. 创建docker-compose.yml

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

2. 配置PHP Dockerfile

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

3. 配置Nginx

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;
    }
}

创建Laravel项目

  1. 启动基础服务:
docker-compose up -d db redis
  1. 使用Composer创建项目:
docker-compose run --rm app composer create-project laravel/laravel src
  1. 设置目录权限:
docker-compose run --rm app chmod -R 777 src/storage src/bootstrap/cache

配置Laravel环境

  1. 修改.env文件:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secret

REDIS_HOST=redis
  1. 启动所有服务:
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

扩展建议

  1. Xdebug配置:用于PHP调试
  2. Mailhog:本地邮件测试服务
  3. phpMyAdmin:数据库管理界面
  4. Node.js容器:用于前端资源编译

常见问题解决

  1. 端口冲突:修改docker-compose.yml中的端口映射
  2. 权限问题:确保storage目录可写
  3. 服务启动失败:查看日志docker-compose logs [服务名]

结语

通过Docker搭建的Laravel环境具有高度可移植性和一致性,团队成员可以快速共享相同的开发环境。后续可以进一步优化Docker配置,或将其集成到CI/CD流程中。

提示:本文配置适用于开发环境,生产环境需要额外考虑安全性和性能优化。 “`

这篇文章提供了从零开始搭建Laravel Docker环境的完整指南,包含详细的配置示例和实用命令。您可以根据实际需求调整PHP版本、数据库类型等配置参数。

推荐阅读:
  1. 使用docker搭建LAMP环境
  2. 使用Docker怎么搭建Laravel和Vue项目的开发环境

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker laravel

上一篇:Docker怎么部署Laravel应用实现队列和任务调度

下一篇:如何用Docker搭建Laravel和Vue项目的开发环境

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》