插件窝 干货文章 Docker实践:安装Symfony并配置环境

Docker实践:安装Symfony并配置环境

Docker Symfony Compose Xdebug 202    来源:    2025-04-10

Docker 实践:安装 Symfony 并配置环境

准备工作

在开始之前,请确保您已经安装了以下软件: - Docker (最新稳定版) - Docker Compose (通常随 Docker 一起安装)

步骤 1:创建项目目录结构

mkdir symfony-docker
cd symfony-docker

步骤 2:创建 Docker 配置文件

创建 docker-compose.yml 文件

version: '3.8'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./:/var/www/html
    depends_on:
      - mysql
      - redis

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

  mysql:
    image: mysql:5.7
    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"

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

volumes:
  mysql_data:

创建 Dockerfile 文件

FROM php:8.1-fpm

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip \
    libzip-dev

# 清除缓存
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# 安装 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 /var/www/html

创建 Nginx 配置文件

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

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

步骤 3:启动容器

docker-compose up -d

步骤 4:安装 Symfony

方法 1:使用 Composer 创建新项目

docker-compose exec php composer create-project symfony/website-skeleton .

方法 2:如果您已经有 Symfony 项目

只需将项目文件放入项目目录即可。

步骤 5:配置 Symfony

配置数据库连接

编辑 .env 文件:

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

安装 Symfony 依赖

docker-compose exec php composer install

步骤 6:验证安装

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

常用命令

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

可选配置

安装 Xdebug (开发环境)

修改 Dockerfile 添加:

# 安装 Xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug

# 配置 Xdebug
COPY docker/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

创建 docker/php/xdebug.ini:

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.start_with_request=yes
xdebug.discover_client_host=1
xdebug.log=/var/www/html/var/log/xdebug.log

安装 Node.js 和 Yarn

修改 Dockerfile 添加:

# 安装 Node.js 和 Yarn
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - \
    && apt-get install -y nodejs \
    && npm install -g yarn

故障排除

  1. 权限问题:

    docker-compose exec php chown -R www-data:www-data var
    
  2. 端口冲突: 修改 docker-compose.yml 中的端口映射

  3. 容器无法启动:

    docker-compose logs [service_name]
    
  4. 数据库连接问题: 确保 .env 中的数据库配置与 docker-compose.yml 中的一致

这个配置提供了一个完整的 Symfony 开发环境,包括 PHP、Nginx、MySQL、Redis 和 Mailhog。您可以根据项目需求进一步定制。