插件窝 干货文章 Docker安装Symfony:快速搭建开发环境指南

Docker安装Symfony:快速搭建开发环境指南

Docker Symfony Compose bash 221    来源:    2025-04-10

Docker安装Symfony:快速搭建开发环境指南

概述

Symfony是一个流行的PHP框架,结合Docker可以快速搭建隔离的开发环境。本指南将详细介绍如何使用Docker容器化Symfony应用。

准备工作

  1. 安装Docker和Docker Compose

  2. 验证安装

    docker --version
    docker-compose --version
    

方法一:使用Symfony CLI创建项目

1. 安装Symfony CLI

# Linux/macOS
curl -sS https://get.symfony.com/cli/installer | bash
# 或使用Homebrew
brew install symfony-cli/tap/symfony-cli

# Windows
# 下载并安装 https://get.symfony.com/cli/symfony.exe

2. 创建Symfony项目

symfony new my_project --webapp
cd my_project

3. 创建Docker配置

在项目根目录创建docker-compose.yaml文件:

version: '3.8'

services:
  db:
    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

  php:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www/html
    depends_on:
      - db

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

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

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

WORKDIR /var/www/html

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN chown -R www-data:www-data /var/www/html

创建docker/nginx.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/project_error.log;
    access_log /var/log/nginx/project_access.log;
}

4. 启动容器

docker-compose up -d --build

5. 安装依赖

docker-compose exec php composer install

6. 访问应用

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

方法二:使用Symfony Docker官方镜像

Symfony提供了官方Docker镜像,可以更简单地设置:

1. 创建项目

composer create-project symfony/website-skeleton my_project
cd my_project

2. 使用Symfony Docker

git clone https://github.com/dunglas/symfony-docker
cd symfony-docker
cp .env .env.local

3. 配置环境变量

编辑.env.local,根据需要修改配置。

4. 启动服务

docker-compose up -d

5. 安装依赖

docker-compose exec php composer install

6. 访问应用

默认端口为8000:http://localhost:8000

常见问题解决

1. 权限问题

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

docker-compose exec php chown -R www-data:www-data var

2. 数据库连接问题

检查.env文件中的数据库配置:

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

3. 缓存和日志目录

确保缓存和日志目录可写:

mkdir -p var/cache var/log
chmod -R 777 var/cache var/log

开发工作流

  1. 运行命令

    docker-compose exec php bin/console [command]
    
  2. 查看日志

    docker-compose logs -f
    
  3. 停止服务

    docker-compose down
    
  4. 重建服务(修改配置后):

    docker-compose up -d --build
    

生产环境建议

  1. 使用单独的.env.prod文件
  2. 禁用调试模式
  3. 优化Composer自动加载
  4. 配置适当的Nginx缓存和安全头
  5. 使用TLS/SSL加密

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