插件窝 干货文章 使用Docker快速创建Symfony开发环境

使用Docker快速创建Symfony开发环境

Symfony Docker mysql PHP 244    来源:    2025-04-10

使用Docker创建Symfony开发环境

Symfony是一个流行的PHP框架,使用Docker可以快速搭建一致的开发环境。以下是创建Symfony开发环境的完整方案:

1. 基础Docker配置

创建docker-compose.yml文件:

version: '3.8'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./:/var/www/html
    depends_on:
      - mysql
      - redis
    environment:
      DATABASE_URL: "mysql://symfony:password@mysql:3306/symfony"
      REDIS_URL: "redis://redis"

  nginx:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: symfony
      MYSQL_USER: symfony
      MYSQL_PASSWORD: password
    volumes:
      - mysql-data:/var/lib/mysql
    ports:
      - "3306:3306"

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

  mailhog:
    image: mailhog/mailhog
    ports:
      - "8025:8025"

volumes:
  mysql-data:

2. 创建Dockerfile

创建Dockerfile

FROM php:8.2-fpm

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip \
    libzip-dev

# 安装PHP扩展
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip

# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 安装Symfony CLI
RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash \
    && apt install symfony-cli

# 设置工作目录
WORKDIR /var/www/html

3. 配置Nginx

创建docker/nginx/default.conf

server {
    listen 80;
    server_name localhost;
    root /var/www/html/public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass php:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }

    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;
}

4. 创建Symfony项目

  1. 首先启动基础服务:
docker-compose up -d mysql redis nginx
  1. 进入PHP容器创建Symfony项目:
docker-compose run --rm php symfony new . --full

或者使用Composer:

docker-compose run --rm php composer create-project symfony/website-skeleton .

5. 配置Symfony

  1. 更新.env文件中的数据库配置:
DATABASE_URL="mysql://symfony:password@mysql:3306/symfony?serverVersion=8.0"
  1. 安装常用Bundle:
docker-compose run --rm php composer require symfony/maker-bundle --dev
docker-compose run --rm php composer require symfony/orm-pack
docker-compose run --rm php composer require symfony/apache-pack

6. 启动完整环境

docker-compose up -d

现在可以通过以下URL访问: - 应用: http://localhost:8080 - Mailhog: http://localhost:8025

7. 常用命令

  • 进入PHP容器:

    docker-compose exec php bash
    
  • 运行Symfony命令:

    docker-compose exec php symfony console make:controller
    
  • 查看日志:

    docker-compose logs -f
    
  • 停止环境:

    docker-compose down
    

8. 可选扩展

如果需要Xdebug调试,可以修改Dockerfile添加:

RUN pecl install xdebug && docker-php-ext-enable xdebug

然后在PHP容器中创建/usr/local/etc/php/conf.d/xdebug.ini

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.start_with_request=yes

总结

这个配置提供了完整的Symfony开发环境,包括: - PHP 8.2 - Nginx - MySQL 8.0 - Redis - Mailhog (邮件测试工具) - Symfony CLI工具

您可以根据项目需求调整配置,添加更多服务或修改版本号。