插件窝 干货文章 Docker安装Symfony:实现快速开发

Docker安装Symfony:实现快速开发

Docker Symfony PHP Compose 422    来源:    2025-04-10

使用Docker安装Symfony实现快速开发

Symfony是一个流行的PHP框架,结合Docker可以快速搭建开发环境。以下是详细安装步骤:

1. 准备工作

确保已安装: - Docker Desktop (Windows/Mac) 或 Docker Engine (Linux) - Docker Compose

2. 创建Symfony项目

方法一:使用Symfony CLI

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

# 创建新项目
symfony new my_project --full --docker

方法二:手动创建Docker环境

  1. 创建项目目录结构:
mkdir symfony-docker && cd symfony-docker
  1. 创建docker-compose.yml文件:
version: '3.8'

services:
  php:
    image: php:8.2-fpm
    volumes:
      - ./:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - mysql
      - 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: symfony
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

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

volumes:
  mysql_data:
  1. 创建Nginx配置文件docker/nginx/default.conf
server {
    listen 80;
    index index.php;
    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;
}
  1. 安装Symfony:
docker-compose run --rm php bash -c "composer create-project symfony/website-skeleton ."

3. 启动环境

docker-compose up -d

访问 http://localhost:8080 应该能看到Symfony欢迎页面。

4. 常用开发命令

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

# 在容器内运行Symfony命令
docker-compose exec php bin/console make:controller

# 安装依赖
docker-compose exec php composer require [package]

# 查看日志
docker-compose logs -f

5. 数据库配置

.env文件中配置数据库连接:

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

创建数据库和迁移:

docker-compose exec php bin/console doctrine:database:create
docker-compose exec php bin/console make:migration
docker-compose exec php bin/console doctrine:migrations:migrate

6. Xdebug配置 (可选)

docker-compose.yml的php服务中添加:

environment:
  XDEBUG_MODE: develop,debug
  XDEBUG_CONFIG: client_host=host.docker.internal
volumes:
  - ./docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

创建docker/php/conf.d/xdebug.ini

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

7. 常用工具扩展

# 安装常用扩展
docker-compose exec php docker-php-ext-install pdo pdo_mysql

# 安装Composer
docker-compose exec php curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

8. 生产环境优化

# 清理开发依赖
docker-compose exec php composer install --no-dev --optimize-autoloader

# 缓存预热
docker-compose exec php bin/console cache:clear --env=prod --no-debug

通过以上步骤,您已经建立了一个完整的Symfony Docker开发环境,可以快速开始项目开发。