Docker-Symfony自定义扩展教程:添加PHPMyAdmin与Redis服务的完整步骤

【免费下载链接】docker-symfony :whale: A docker multicontainer with NGINX, PHP7-FPM, MySQL and ELK (Elasticsearch Logstash and Kibana) 【免费下载链接】docker-symfony 项目地址: https://gitcode.com/gh_mirrors/doc/docker-symfony

Docker-Symfony是一个强大的多容器应用方案,集成了NGINX、PHP7-FPM、MySQL和ELK等核心服务。本教程将指导你如何轻松扩展这个容器架构,添加实用的PHPMyAdmin数据库管理工具和Redis缓存服务,让你的Symfony开发环境更加完善和高效。

为什么需要扩展Docker-Symfony架构?

默认的Docker-Symfony架构已经包含了Web服务器、PHP解释器、数据库和日志分析工具,但在实际开发中,我们往往需要更多辅助服务:

  • PHPMyAdmin:提供直观的Web界面管理MySQL数据库,比命令行操作更高效
  • Redis:作为缓存服务提升Symfony应用性能,还可用于会话存储和消息队列

Docker-Symfony原始架构图 图:Docker-Symfony原始架构图,展示了NGINX、PHP7-FPM、MySQL和ELK之间的关系

准备工作:了解docker-compose.yml配置

扩展容器服务的核心是修改项目根目录下的docker-compose.yml文件。这个YAML文件定义了所有容器服务的配置,包括镜像选择、端口映射、数据卷和环境变量等关键信息。

默认配置中已经包含了以下服务:

  • db:MySQL数据库服务
  • php:PHP7-FPM服务
  • nginx:Web服务器服务
  • elk:Elasticsearch、Logstash和Kibana日志分析服务

步骤1:添加PHPMyAdmin服务

PHPMyAdmin是最流行的MySQL数据库管理工具,通过Web界面即可轻松管理数据库。

  1. 打开docker-compose.yml文件
  2. 在现有服务列表末尾添加以下配置:
phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 8080:80
    environment:
        PMA_HOST: db
        MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    depends_on:
        - db

配置说明

  • 使用官方phpmyadmin镜像
  • 映射8080端口到容器的80端口
  • 通过PMA_HOST环境变量连接到db服务
  • 依赖db服务,确保数据库先启动

步骤2:添加Redis服务

Redis是高性能的内存数据库,非常适合作为Symfony的缓存后端。

  1. 继续编辑docker-compose.yml文件
  2. 添加Redis服务配置:
redis:
    image: redis:alpine
    ports:
        - 6379:6379
    volumes:
        - ./redis/data:/data

配置说明

  • 使用轻量级的redis:alpine镜像
  • 映射6379默认端口
  • 创建数据卷持久化Redis数据

步骤3:更新Symfony配置

添加服务后,需要配置Symfony使用Redis作为缓存:

  1. 安装Redis PHP扩展和Symfony缓存适配器:
docker-compose exec php composer require predis/predis symfony/cache
  1. 修改Symfony配置文件app/config/config.yml
framework:
    cache:
        app: cache.adapter.redis
        default_redis_provider: redis://redis:6379

步骤4:启动扩展后的服务

完成配置后,使用以下命令启动所有服务:

docker-compose up -d

这个命令会:

  • 下载新添加的PHPMyAdmin和Redis镜像
  • 创建并启动所有容器服务
  • 建立服务之间的网络连接

验证服务是否正常运行

  1. 访问PHPMyAdmin:打开浏览器访问http://localhost:8080,使用MySQL的用户名和密码登录

  2. 测试Redis连接:通过以下命令测试Redis是否正常工作:

docker-compose exec php php -r "new Redis()->connect('redis', 6379) && echo 'Redis connected successfully';"

常见问题解决

  • PHPMyAdmin无法连接数据库:检查db服务是否正常运行,确认MYSQL_ROOT_PASSWORD环境变量是否正确设置

  • Redis连接失败:确保redis服务已启动,检查Symfony配置中的Redis连接字符串是否为redis://redis:6379

  • 端口冲突:如果8080或6379端口已被占用,可以修改docker-compose.yml中的端口映射,例如8081:80

总结

通过本教程,你已经成功为Docker-Symfony架构添加了PHPMyAdmin和Redis服务。这些工具将显著提升你的开发效率:PHPMyAdmin提供了便捷的数据库管理界面,Redis则为Symfony应用提供了高性能的缓存支持。

这种扩展方式也适用于添加其他服务,如Memcached、RabbitMQ等,你可以根据项目需求继续扩展这个容器化架构。

要开始使用这个增强版的Docker-Symfony环境,只需克隆仓库并按照上述步骤配置:

git clone https://gitcode.com/gh_mirrors/doc/docker-symfony
cd docker-symfony
# 按照教程修改docker-compose.yml
docker-compose up -d

现在,你拥有了一个功能更加完善的Symfony开发环境,开始你的项目开发吧! 🚀

【免费下载链接】docker-symfony :whale: A docker multicontainer with NGINX, PHP7-FPM, MySQL and ELK (Elasticsearch Logstash and Kibana) 【免费下载链接】docker-symfony 项目地址: https://gitcode.com/gh_mirrors/doc/docker-symfony

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐