插件窝 干货文章 Docker安装Symfony:简单快捷的开发环境

Docker安装Symfony:简单快捷的开发环境

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

Docker 安装 Symfony:简单快捷的开发环境指南

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

方法一:使用官方 Symfony Docker 模板

1. 创建新项目

# 使用 Composer 创建新的 Symfony 项目
composer create-project symfony/website-skeleton my-project

# 或者使用 Symfony CLI
symfony new my-project --full

2. 添加 Docker 配置

Symfony 官方提供了 Docker 配置模板:

cd my-project
composer require symfony/docker

这会添加以下文件: - docker-compose.yaml - Docker Compose 配置文件 - Dockerfile - PHP 容器的 Dockerfile - .docker/ - 包含 Nginx 和 PHP-FPM 配置的目录

3. 启动容器

docker-compose up -d

4. 访问应用

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

方法二:手动配置 Docker

如果你需要更多自定义选项,可以手动配置 Docker。

1. 创建 docker-compose.yaml

version: '3.8'

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

  nginx:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - .:/var/www/html
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
    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"

volumes:
  mysql_data:

2. 创建 Dockerfile

FROM php:8.1-fpm

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

# 安装 PHP 扩展
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# 安装 Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 设置工作目录
WORKDIR /var/www/html

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 --build

常见问题解决

1. 权限问题

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

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

2. 数据库连接配置

.env 文件中配置数据库连接:

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

3. 安装 Symfony 组件

如果需要额外组件,可以在 PHP 容器中运行:

docker-compose exec php composer require [package-name]

开发工作流

  1. 运行命令:在 PHP 容器中执行 Symfony 命令

    docker-compose exec php bin/console make:controller
    
  2. 查看日志

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

    docker-compose down
    

使用 Docker 搭建 Symfony 环境可以确保开发、测试和生产环境的一致性,大大简化了团队协作和部署流程。