插件窝 干货文章 教你如何在Docker中快速搭建Symfony环境

教你如何在Docker中快速搭建Symfony环境

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

在Docker中快速搭建Symfony环境指南

Symfony是一个流行的PHP框架,使用Docker可以快速搭建开发环境而无需在本地安装各种依赖。以下是详细步骤:

1. 准备工作

确保已安装: - Docker Desktop (或Docker Engine + Docker Compose) - Git (可选)

2. 创建Symfony项目

方法一:使用Symfony CLI (推荐)

# 安装Symfony CLI (如果尚未安装)
curl -sS https://get.symfony.com/cli/installer | bash
mv ~/.symfony/bin/symfony /usr/local/bin/symfony

# 创建新项目
symfony new my_project --webapp
cd my_project

方法二:使用Composer

composer create-project symfony/website-skeleton my_project
cd my_project

3. 创建Docker配置文件

在项目根目录创建docker-compose.yml文件:

version: '3.8'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www/html
    depends_on:
      - mysql
      - redis

  nginx:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html
      - ./docker/nginx.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: symfony
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

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

  mailhog:
    image: mailhog/mailhog
    ports:
      - "1025:1025" # SMTP
      - "8025:8025" # Web UI

volumes:
  mysql_data:

4. 创建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

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

5. 创建Nginx配置

创建docker/nginx.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;
}

6. 配置Symfony环境变量

创建/修改.env文件:

APP_ENV=dev
APP_SECRET=your_secret_key

DATABASE_URL="mysql://symfony:symfony@mysql:3306/symfony?serverVersion=8.0"
MAILER_DSN=smtp://mailhog:1025

7. 启动容器

docker-compose up -d

8. 安装依赖

docker-compose exec php composer install

9. 访问应用

  • Symfony应用: http://localhost:8080
  • Mailhog (邮件测试): http://localhost:8025

10. 常用命令

# 进入PHP容器
docker-compose exec php bash

# 运行Symfony命令
docker-compose exec php bin/console [command]

# 停止容器
docker-compose down

# 重建容器
docker-compose up -d --build

# 查看日志
docker-compose logs -f

可选配置

Xdebug配置 (在Dockerfile中添加)

# 安装Xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug

# 配置Xdebug
RUN echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

添加PHPMyAdmin

docker-compose.yml中添加:

phpmyadmin:
  image: phpmyadmin/phpmyadmin
  ports:
    - "8081:80"
  environment:
    PMA_HOST: mysql
  depends_on:
    - mysql

然后访问: http://localhost:8081


现在你已经拥有了一个完整的Symfony开发环境,包含PHP 8.2, Nginx, MySQL 8, Redis和Mailhog。可以根据项目需求进一步定制这个配置。