
dlxmedia/docker-symfonySymfony Docker镜像专为简化Symfony PHP Web框架应用的部署与开发而设计。该镜像基于官方PHP镜像构建,预配置了Symfony运行所需的核心依赖(如PHP扩展、Web服务器等),支持快速启动Symfony应用,减少环境配置复杂度。
bashdocker run -d \ -p 8000:8000 \ -v $(pwd):/app \ -e SYMFONY_ENV=dev \ symfony:latest \ php bin/console server:run 0.0.0.0:8000
说明:通过
-v $(pwd):/app挂载本地Symfony项目目录,实现代码热更新;SYMFONY_ENV=dev启用开发模式
bashdocker run -d \ -p 80:80 \ -v $(pwd):/app \ -e SYMFONY_ENV=prod \ -e APP_ENV=prod \ -e APP_SECRET=your_secret_key \ -e DATABASE_URL=mysql://user:pass@db:3306/dbname \ symfony:latest \ nginx -g 'daemon off;'
说明:生产环境默认使用Nginx作为Web服务器,需配置
APP_SECRET和DATABASE_URL等必要环境变量
创建docker-compose.yml文件:
yamlversion: '3.8' services: symfony: image: symfony:latest ports: - "80:80" volumes: - ./:/app environment: - SYMFONY_ENV=prod - APP_ENV=prod - APP_SECRET=your_secret_key_here - DATABASE_URL=mysql://user:pass@db:3306/symfony_db - PHP_MEMORY_LIMIT=512M - WEB_SERVER=nginx depends_on: - db db: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=root_password - MYSQL_DATABASE=symfony_db - MYSQL_USER=user - MYSQL_PASSWORD=pass volumes: - db_data:/var/lib/mysql volumes: db_data:
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
SYMFONY_ENV | Symfony环境类型(dev/prod/test) | dev |
APP_ENV | 应用环境(Symfony 4+推荐使用) | dev |
APP_SECRET | Symfony应用密钥(生产环境必填) | 空 |
DATABASE_URL | 数据库连接URL(如MySQL、PostgreSQL) | 空 |
PHP_MEMORY_LIMIT | PHP内存限制 | 256M |
WEB_SERVER | Web服务器类型(nginx/apache) | nginx |
PHP_EXTENSIONS | 额外PHP扩展(逗号分隔,如redis,xdebug) | 空 |
安装依赖:进入容器执行Composer命令
bashdocker exec -it [容器ID] composer install --no-dev --optimize-autoloader
数据库迁移:执行Symfony控制台命令
bashdocker exec -it [容器ID] php bin/console doctrine:migrations:migrate
缓存清理(生产环境):
bashdocker exec -it [容器ID] php bin/console cache:clear --env=prod --no-debug
查看应用日志:
bashdocker exec -it [容器ID] tail -f var/log/prod.log
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务