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

教你如何在Docker容器中安装Symfony框架

Symfony Docker mysql 安装 272    来源:    2025-04-10

在Docker容器中安装Symfony框架指南

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

1. 准备工作

确保已安装: - Docker - Docker Compose

2. 创建项目结构

mkdir symfony-docker-project
cd symfony-docker-project

3. 创建Docker相关文件

docker-compose.yml

version: '3.8'

services:
  php:
    build:
      context: .
      target: symfony_php
      args:
        SYMFONY_VERSION: 6.3.*
    container_name: symfony_app
    working_dir: /var/www
    volumes:
      - ./:/var/www
    depends_on:
      - mysql

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

  mysql:
    image: mysql:8.0
    container_name: symfony_mysql
    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:

Dockerfile

FROM php:8.2-fpm-alpine AS symfony_php

ARG SYMFONY_VERSION=6.3.*

RUN apk add --no-cache \
    acl \
    fcgi \
    file \
    gettext \
    git \
    mysql-client \
    unzip \
    libzip-dev \
    libpng-dev \
    libjpeg-turbo-dev \
    freetype-dev \
    icu-dev

RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install -j$(nproc) gd pdo pdo_mysql zip intl opcache

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

WORKDIR /var/www

# 安装Symfony CLI (可选)
RUN wget https://get.symfony.com/cli/installer -O - | bash && \
    mv /root/.symfony5/bin/symfony /usr/local/bin/symfony

# 创建项目
RUN composer create-project symfony/skeleton:"${SYMFONY_VERSION}" .

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

nginx.conf (创建在docker目录下)

server {
    listen 80;
    server_name localhost;
    root /var/www/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. 安装Symfony

如果Dockerfile中没有自动创建项目,可以进入容器手动安装:

docker exec -it symfony_app bash
# 在容器内执行
composer create-project symfony/skeleton .

6. 配置数据库连接

编辑.env文件:

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

7. 验证安装

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

可选配置

安装常用Symfony组件

docker exec -it symfony_app composer require symfony/maker-bundle --dev
docker exec -it symfony_app composer require annotations
docker exec -it symfony_app composer require twig
docker exec -it symfony_app composer require security

使用Symfony CLI

如果安装了Symfony CLI,可以运行:

docker exec -it symfony_app symfony server:start

常见问题解决

  1. 权限问题

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

  3. 数据库连接失败: 确保MySQL容器完全启动后再尝试连接,可以增加健康检查

通过以上步骤,您应该能够在Docker环境中成功安装并运行Symfony框架。