插件窝 干货文章 教程:使用Docker来安装Symfony

教程:使用Docker来安装Symfony

Docker Symfony Compose 安装 255    来源:    2025-04-10

使用Docker安装Symfony教程

简介

Symfony是一个流行的PHP框架,使用Docker可以简化其安装和环境配置过程。本教程将指导您如何使用Docker容器来安装和运行Symfony应用。

前提条件

  • 已安装Docker和Docker Compose
  • 基本的命令行知识

安装步骤

1. 创建Symfony项目

首先,使用Composer创建一个新的Symfony项目:

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

这将创建一个名为my-symfony-app的新Symfony项目。

2. 创建Docker配置文件

进入项目目录并创建必要的Docker文件:

cd my-symfony-app

创建Dockerfile

# Dockerfile
FROM php:8.2-fpm

# 安装必要的PHP扩展
RUN apt-get update && apt-get install -y \
    git \
    zip \
    unzip \
    libzip-dev \
    libpq-dev \
    && docker-php-ext-install zip pdo pdo_mysql

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

WORKDIR /var/www

创建docker-compose.yml

version: '3.8'

services:
  app:
    build: .
    volumes:
      - .:/var/www
    depends_on:
      - db
      - redis

  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

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

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

volumes:
  mysql_data:

创建Nginx配置文件

创建docker/nginx.conf文件:

server {
    listen 80;
    index index.php;
    server_name localhost;
    root /var/www/public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass app: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;
}

3. 构建并启动容器

docker-compose up -d --build

4. 安装Symfony依赖

docker-compose exec app composer install

5. 配置数据库连接

编辑.env文件,更新数据库配置部分:

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

6. 创建数据库

docker-compose exec app php bin/console doctrine:database:create
docker-compose exec app php bin/console doctrine:migrations:migrate

7. 访问应用

现在您可以通过浏览器访问Symfony应用: http://localhost:8080

常用命令

  • 停止容器:docker-compose down
  • 启动容器:docker-compose up -d
  • 进入app容器:docker-compose exec app bash
  • 查看日志:docker-compose logs -f

可选配置

安装Symfony CLI工具(用于开发)

docker-compose exec app curl -sS https://get.symfony.com/cli/installer | bash
docker-compose exec app mv /root/.symfony5/bin/symfony /usr/local/bin/symfony

安装Webpack Encore(前端资产管理)

docker-compose exec app composer require symfony/webpack-encore-bundle
docker-compose exec app yarn install
docker-compose exec app yarn encore dev --watch

故障排除

  1. 端口冲突:确保8080端口未被占用,或修改docker-compose.yml中的端口映射
  2. 权限问题:如果遇到文件权限问题,可以在容器内运行: bash docker-compose exec app chown -R www-data:www-data var
  3. 数据库连接问题:确保.env中的数据库配置与docker-compose.yml中的一致

现在您已经成功使用Docker安装了Symfony应用!