插件窝 干货文章 Docker实战:快速安装Symfony并配置开发环境

Docker实战:快速安装Symfony并配置开发环境

Symfony Docker PHP bash 352    来源:    2025-04-10

Docker实战:Symfony开发环境快速配置指南

简介

Symfony是一个流行的PHP框架,使用Docker可以快速搭建其开发环境,避免本地环境配置的复杂性。本指南将带你通过Docker快速安装Symfony并配置完整的开发环境。

准备工作

  1. 确保已安装Docker和Docker Compose
  2. 确保本地有足够的磁盘空间(至少2GB可用空间)

快速开始

1. 创建项目目录

mkdir symfony-project && cd symfony-project

2. 创建Docker Compose文件

创建docker-compose.yml文件:

version: '3.8'

services:
  php:
    image: php:8.2-fpm
    container_name: symfony_php
    working_dir: /var/www
    volumes:
      - ./:/var/www
    depends_on:
      - db
      - redis
    networks:
      - symfony_network

  nginx:
    image: nginx:alpine
    container_name: symfony_nginx
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www
      - ./docker/nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - php
    networks:
      - symfony_network

  db:
    image: mysql:8.0
    container_name: symfony_db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: symfony
      MYSQL_USER: symfony
      MYSQL_PASSWORD: symfony
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - symfony_network

  redis:
    image: redis:alpine
    container_name: symfony_redis
    ports:
      - "6379:6379"
    networks:
      - symfony_network

  mailhog:
    image: mailhog/mailhog
    container_name: symfony_mailhog
    ports:
      - "8025:8025"
    networks:
      - symfony_network

volumes:
  db_data:

networks:
  symfony_network:
    driver: bridge

3. 创建Nginx配置文件

创建目录和配置文件:

mkdir -p docker/nginx/conf.d

创建docker/nginx/conf.d/symfony.conf文件:

server {
    listen 80;
    server_name localhost;
    root /var/www/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/symfony_error.log;
    access_log /var/log/nginx/symfony_access.log;
}

4. 启动容器

docker-compose up -d

5. 安装Symfony

进入PHP容器:

docker exec -it symfony_php bash

在容器内安装Symfony CLI工具并创建新项目:

curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash
apt install symfony-cli
symfony new . --full

或者使用Composer创建项目:

composer create-project symfony/website-skeleton .

6. 安装PHP扩展

在PHP容器内运行:

docker-php-ext-install pdo pdo_mysql
pecl install redis && docker-php-ext-enable redis

7. 配置数据库连接

编辑.env文件:

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

8. 创建数据库

php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate

常用命令

  • 启动服务docker-compose up -d
  • 停止服务docker-compose down
  • 查看日志docker-compose logs -f
  • 进入PHP容器docker exec -it symfony_php bash
  • 清除缓存php bin/console cache:clear

环境验证

  1. 访问 http://localhost:8080 应该看到Symfony欢迎页面
  2. 访问 http://localhost:8025 可以查看Mailhog邮件界面

开发建议

  1. Xdebug配置(可选):

    • 在PHP容器内安装Xdebug: bash pecl install xdebug docker-php-ext-enable xdebug
    • php.ini中添加Xdebug配置
  2. Composer加速

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
  3. Git忽略文件: 确保将vendor/.env添加到.gitignore

故障排除

  1. 端口冲突

    • 检查8080、3306等端口是否被占用,必要时修改docker-compose.yml中的端口映射
  2. 权限问题

    chmod -R 777 var/
    
  3. 数据库连接失败

    • 确保数据库服务已启动
    • 检查.env中的数据库配置是否正确

通过以上步骤,你已经成功使用Docker搭建了一个完整的Symfony开发环境,可以开始你的Symfony项目开发了!