插件窝 干货文章 教你如何在Docker中安装Symfony

教你如何在Docker中安装Symfony

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

在Docker中安装Symfony的完整指南

Symfony是一个流行的PHP框架,使用Docker可以简化其安装和开发环境配置过程。以下是详细的安装步骤:

1. 准备工作

确保已安装: - Docker - Docker Compose

2. 创建Symfony项目

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

docker run --rm -v $(pwd):/app composer create-project symfony/skeleton my-symfony-project

方法二:使用本地Composer

composer create-project symfony/skeleton my-symfony-project
cd my-symfony-project

3. 创建Docker配置文件

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

version: '3.8'

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

  php:
    build:
      context: .
      dockerfile: docker/php/Dockerfile
    volumes:
      - ./:/var/www/html
    environment:
      - APP_ENV=dev

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

volumes:
  mysql_data:

4. 创建必要的Docker目录和文件

Nginx配置

创建docker/nginx.conf

server {
    listen 80;
    index index.php;
    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;
    }
}

PHP Dockerfile

创建docker/php/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

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

WORKDIR /var/www/html

5. 启动Docker容器

docker-compose up -d

6. 安装Symfony组件(可选)

如果需要额外的Symfony组件,可以进入PHP容器安装:

docker-compose exec php bash
# 然后在容器内运行:
composer require symfony/maker-bundle --dev
composer require annotations

7. 验证安装

访问 http://localhost:8080 应该能看到Symfony欢迎页面。

8. 数据库配置

修改.env文件中的数据库配置:

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

9. 常用命令

  • 停止容器: docker-compose down
  • 重建容器: docker-compose up -d --build
  • 查看日志: docker-compose logs -f

替代方案:使用Symfony Docker

Symfony官方提供了一个更完整的Docker集成方案:Symfony Docker,包含更多功能如: - 生产优化配置 - CI/CD支持 - 多阶段构建 - 内置Varnish和Mercure支持

安装方法:

git clone https://github.com/dunglas/symfony-docker.git my-project
cd my-project
docker-compose up -d

希望这个指南能帮助你在Docker环境中顺利安装和运行Symfony应用!