插件窝 干货文章 使用Docker进行Symfony框架的快速安装

使用Docker进行Symfony框架的快速安装

Symfony Docker PHP 安装 1024    来源:    2025-04-10

使用Docker快速安装Symfony框架指南

方案概述

使用Docker可以快速搭建Symfony开发环境,无需在本地安装PHP、Web服务器和数据库等组件。以下是完整的安装步骤。

准备工作

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

快速安装步骤

1. 创建项目目录

mkdir symfony-project
cd symfony-project

2. 创建Docker Compose文件

创建docker-compose.yaml文件:

version: '3.8'

services:
  php:
    image: php:8.2-fpm
    container_name: symfony_php
    volumes:
      - .:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - mysql
      - redis

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

  mysql:
    image: mysql:8.0
    container_name: symfony_mysql
    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
    container_name: symfony_redis
    ports:
      - "6379:6379"

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

volumes:
  mysql_data:

3. 创建Nginx配置文件

创建docker/nginx.conf文件:

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    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;
    }
}

4. 启动容器

docker-compose up -d

5. 安装Symfony

进入PHP容器安装Symfony:

docker exec -it symfony_php bash

在容器内执行:

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

# 创建新的Symfony项目
composer create-project symfony/website-skeleton .

# 安装常用包
composer require symfony/maker-bundle --dev
composer require annotations
composer require twig
composer require symfony/orm-pack
composer require --dev symfony/profiler-pack

6. 配置数据库连接

编辑.env文件:

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

7. 创建数据库

docker exec -it symfony_php bash
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate

8. 访问应用

打开浏览器访问:http://localhost:8080

可选组件安装

安装Xdebug(用于调试)

编辑docker-compose.yaml,在php服务下添加:

environment:
  XDEBUG_MODE: debug
  XDEBUG_CONFIG: client_host=host.docker.internal

然后重建容器:

docker-compose down
docker-compose up -d --build

进入PHP容器安装Xdebug:

docker exec -it symfony_php bash
pecl install xdebug
docker-php-ext-enable xdebug

常用命令

  • 启动容器:docker-compose up -d
  • 停止容器:docker-compose down
  • 查看日志:docker-compose logs -f
  • 进入PHP容器:docker exec -it symfony_php bash
  • 运行Symfony命令:docker exec symfony_php php bin/console [command]

故障排除

  1. 端口冲突:检查8080、3306等端口是否被占用,可在docker-compose.yaml中修改端口映射
  2. 权限问题:确保项目目录对Docker有读写权限
  3. 数据库连接失败:检查MySQL容器是否启动,确认.env中的连接字符串正确

通过以上步骤,您已经成功使用Docker搭建了Symfony开发环境,可以开始Symfony应用开发了。