插件窝 干货文章 Docker容器中安装Symfony:实现高效开发

Docker容器中安装Symfony:实现高效开发

Docker Symfony Compose composer 902    来源:    2025-04-10

在Docker容器中安装Symfony框架的完整指南

为什么选择Docker运行Symfony?

Docker为Symfony开发提供了以下优势: - 环境一致性:确保开发、测试和生产环境一致 - 快速配置:几分钟内搭建完整的开发环境 - 隔离性:避免主机系统污染 - 可移植性:轻松分享开发环境配置

安装步骤

1. 准备Docker环境

确保已安装Docker和Docker Compose:

docker --version
docker-compose --version

2. 创建Symfony项目

方法一:使用官方Symfony Docker镜像

docker run --rm -v $(pwd):/app -w /app composer create-project symfony/skeleton:"6.4.*" my_project

方法二:先创建项目后配置Docker

composer create-project symfony/skeleton:"6.4.*" my_project
cd my_project

3. 创建Docker配置

创建docker-compose.yml文件:

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    volumes:
      - .:/srv/app
    depends_on:
      - db

  db:
    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

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
    depends_on:
      - db

volumes:
  mysql_data:

创建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 /srv/app

4. 构建并启动容器

docker-compose up -d --build

5. 安装Symfony CLI(可选)

# 在主机上安装
curl -sS https://get.symfony.com/cli/installer | bash
mv ~/.symfony5/bin/symfony /usr/local/bin/symfony

# 或者在容器内安装
docker-compose exec app bash -c "curl -sS https://get.symfony.com/cli/installer | bash"

6. 运行Symfony开发服务器

docker-compose exec app symfony server:start --port=8000 --allow-http

常见配置调整

数据库连接配置

修改.env文件:

DATABASE_URL="mysql://symfony:symfony@db:3306/symfony?serverVersion=8.0"

安装常用Symfony组件

docker-compose exec app composer require:
    annotations
    doctrine/orm
    form
    security-csrf
    serializer
    twig
    validator
    maker --dev
    profiler --dev

开发工作流程

  1. 启动服务

    docker-compose up -d
    
  2. 进入容器

    docker-compose exec app bash
    
  3. 运行命令

    # 在容器内
    composer require [package]
    php bin/console make:controller
    
  4. 停止服务

    docker-compose down
    

性能优化建议

  1. 使用Docker卷缓存Composer依赖

    volumes:
     - $HOME/.composer/cache:/root/.composer/cache
    
  2. 启用OPcache: 在Dockerfile中添加:

    RUN docker-php-ext-install opcache
    
  3. 使用Nginx代替内置服务器(生产环境): 添加Nginx服务到docker-compose.yml

常见问题解决

权限问题

# 在主机上运行
sudo chown -R $USER:$USER .

端口冲突

修改docker-compose.yml中的端口映射:

ports:
  - "8001:8000"

容器间通信问题

确保服务名称一致,并使用depends_on正确声明依赖关系。

生产环境部署

对于生产环境,建议: 1. 使用专门的Web服务器(Nginx/Apache) 2. 配置PHP-FPM优化参数 3. 设置适当的Docker资源限制 4. 使用多阶段构建减小镜像大小

通过以上步骤,您已经成功在Docker容器中设置了Symfony开发环境,可以开始高效的应用程序开发了。