插件窝 干货文章 Docker安装Symfony:详细教程与步骤

Docker安装Symfony:详细教程与步骤

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

Docker 安装 Symfony 详细教程

前言

Symfony 是一个流行的 PHP 框架,结合 Docker 可以快速搭建开发环境。本教程将详细介绍如何使用 Docker 安装和配置 Symfony 项目。

准备工作

  1. 确保已安装 Docker 和 Docker Compose
  2. 基本的命令行操作知识

步骤 1:创建项目目录

mkdir symfony-docker-project
cd symfony-docker-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:
      - mysql
      - redis

  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

  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.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:创建 PHP Dockerfile (可选)

如果需要额外的 PHP 扩展,创建 docker/php/Dockerfile

FROM php:8.2-fpm

RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

RUN docker-php-ext-install pdo pdo_mysql mbstring exif pcntl bcmath gd

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

WORKDIR /var/www

然后更新 docker-compose.yml 中的 php 服务部分:

php:
  build: ./docker/php
  container_name: symfony_php
  # 其余配置保持不变...

步骤 5:启动容器

docker-compose up -d

步骤 6:安装 Symfony

进入 PHP 容器:

docker exec -it symfony_php bash

在容器内安装 Symfony:

composer create-project symfony/skeleton .

或者安装完整版:

composer create-project symfony/website-skeleton .

步骤 7:配置数据库连接

编辑 .env 文件:

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

步骤 8:安装依赖 (可选)

如果需要 Doctrine 或其他组件:

composer require doctrine
composer require symfony/maker-bundle --dev

步骤 9:创建数据库

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

步骤 10:访问应用

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

常见问题解决

1. 权限问题

如果遇到文件权限问题,可以运行:

docker exec -it symfony_php chown -R www-data:www-data /var/www

2. 扩展缺失

如果需要额外扩展,修改 PHP Dockerfile 并重新构建:

docker-compose build php
docker-compose up -d

3. 缓存问题

开发模式下可以关闭缓存:

php bin/console cache:clear

高级配置

Xdebug 配置

在 PHP Dockerfile 中添加:

RUN pecl install xdebug && docker-php-ext-enable xdebug

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

zend_extension=xdebug.so
xdebug.mode=develop,debug
xdebug.client_host=host.docker.internal
xdebug.start_with_request=yes
xdebug.discover_client_host=1

项目结构

最终项目结构应类似:

symfony-docker-project/
├── docker/
│   ├── nginx/
│   │   └── conf.d/
│   │       └── symfony.conf
│   └── php/
│       ├── Dockerfile
│       └── conf.d/
│           └── xdebug.ini
├── docker-compose.yml
├── .env
└── (Symfony 项目文件)

总结

通过以上步骤,您已经成功使用 Docker 搭建了 Symfony 开发环境。这种配置方式具有以下优势:

  1. 环境隔离,不影响本地系统
  2. 易于团队共享一致的开发环境
  3. 快速启动和销毁环境
  4. 可扩展性强,方便添加更多服务

您可以根据项目需求进一步定制 Docker 配置,如添加 Elasticsearch、RabbitMQ 等服务。