3分钟上手!Shenyu网关Docker容器化部署:从0到1的Dockerfile与Compose实战指南
你是否还在为微服务架构中的API网关部署繁琐而头疼?手动配置环境、解决依赖冲突、调整参数耗费大量时间?本文将带你通过Docker容器化技术,3分钟内完成Shenyu网关的一键部署,让你从此告别复杂配置,专注业务逻辑开发。读完本文,你将掌握:Shenyu网关Dockerfile编写技巧、多环境Docker Compose配置方法、容器化部署常见问题解决方案,以及完整的部署流程自动化脚本。
项目概述与环境准备
Shenyu是一个基于Spring Cloud的API网关,主要用于微服务架构中的API管理和流量控制。它的特点是易用性高、灵活性强、性能稳定等。适用于API管理和流量控制场景。在开始部署之前,请确保你的环境中已经安装了Docker和Docker Compose。如果尚未安装,可以参考Docker官方文档进行安装。
项目路径:gh_mirrors/she/shenyu
官方文档:README.md
Dockerfile配置详解
Shenyu网关的Dockerfile主要用于构建网关服务的镜像,包含基础镜像选择、依赖安装、应用打包等步骤。虽然在项目的当前目录结构中没有直接找到Dockerfile文件,但我们可以根据项目的构建流程和配置文件来推断Dockerfile的大致内容。
通常,Shenyu网关的Dockerfile会基于Java基础镜像,例如openjdk:8-jre-alpine,然后将构建好的jar包复制到镜像中,并通过ENTRYPOINT或CMD命令来启动服务。以下是一个参考的Dockerfile示例:
FROM openjdk:8-jre-alpine
WORKDIR /app
COPY target/shenyu-bootstrap.jar app.jar
EXPOSE 9195
ENTRYPOINT ["java", "-jar", "app.jar"]
这个示例中,我们使用了轻量级的Alpine版本的OpenJDK作为基础镜像,将构建好的shenyu-bootstrap.jar复制到容器的/app目录下,并暴露9195端口,最后通过java -jar命令启动服务。
Docker Compose多环境配置
Shenyu项目提供了Docker Compose的配置文件,用于管理多个服务容器的部署。在项目中,Docker Compose相关的配置文件位于shenyu-dist/shenyu-docker-compose-dist目录下。该目录包含了针对不同数据库(如MySQL、H2、PostgreSQL)的配置文件和部署脚本。
单节点MySQL环境配置
单节点MySQL环境的配置文件位于shenyu-dist/shenyu-docker-compose-dist/src/main/resources/stand-alone-mysql目录下。该目录包含了docker-compose.yaml文件以及相关的配置文件。
docker-compose.yaml文件定义了Shenyu网关和MySQL数据库的服务配置,包括服务名称、镜像、端口映射、环境变量、数据卷等。以下是一个简化版的docker-compose.yaml示例:
version: '3'
services:
shenyu-admin:
image: apache/shenyu-admin:latest
ports:
- "9095:9095"
environment:
- SPRING_PROFILES_ACTIVE=mysql
depends_on:
- mysql
volumes:
- ./shenyu-admin/conf:/app/conf
shenyu-bootstrap:
image: apache/shenyu-bootstrap:latest
ports:
- "9195:9195"
environment:
- SPRING_PROFILES_ACTIVE=local
depends_on:
- shenyu-admin
volumes:
- ./shenyu-bootstrap/conf:/app/conf
mysql:
image: mysql:5.7
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=shenyu
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
其他数据库环境配置
除了MySQL环境,Shenyu还提供了H2和PostgreSQL数据库的配置文件,分别位于shenyu-dist/shenyu-docker-compose-dist/src/main/resources/stand-alone-h2和shenyu-dist/shenyu-docker-compose-dist/src/main/resources/stand-alone-pg目录下。这些配置文件的结构与MySQL环境类似,只是针对不同的数据库进行了相应的调整。
一键部署脚本使用指南
为了简化部署流程,Shenyu项目提供了一键部署脚本install.sh,位于shenyu-dist/shenyu-docker-compose-dist/src/main/resources目录下。使用该脚本可以快速下载并安装指定版本的Shenyu网关Docker镜像和配置文件。
脚本下载与执行
首先,通过curl命令下载install.sh脚本:
curl -O https://raw.githubusercontent.com/apache/shenyu/master/shenyu-dist/shenyu-docker-compose-dist/src/main/resources/install.sh
然后,执行脚本并指定Shenyu的版本号,例如v2.4.2或latest:
sh ./install.sh v2.4.2
配置文件修改
脚本执行完成后,会在当前目录下生成相应的配置文件。根据你的实际需求,修改配置文件中的参数,例如数据库连接信息、服务端口等。
启动Docker Compose服务
最后,使用以下命令启动Docker Compose服务:
docker-compose -f ./docker-compose.yaml up -d
# 如果Docker版本大于1.25.5,可以使用以下命令
docker compose -f ./docker-compose.yaml up -d
部署验证与常见问题解决
服务启动后,可以通过访问http://localhost:9095来验证Shenyu管理后台是否正常运行。如果无法访问,可能是以下原因导致:
- 端口冲突:检查9095和9195端口是否被其他服务占用,可以通过修改docker-compose.yaml文件中的端口映射来解决。
- 数据库连接失败:检查MySQL数据库的配置是否正确,包括用户名、密码、数据库名称等。
- 配置文件错误:检查shenyu-admin和shenyu-bootstrap的配置文件是否正确,特别是application.yml和相关的环境配置文件。
如果遇到其他问题,可以查看容器的日志信息来定位问题:
docker logs -f shenyu-admin
docker logs -f shenyu-bootstrap
总结与展望
通过本文的介绍,我们了解了Shenyu网关的Docker容器化部署方案,包括Dockerfile配置、多环境Docker Compose配置、一键部署脚本的使用以及常见问题的解决方法。容器化部署不仅简化了环境配置,还提高了服务的可移植性和可扩展性。
未来,Shenyu项目将继续优化容器化部署方案,提供更多的数据库支持和更丰富的配置选项,以满足不同用户的需求。如果你对Shenyu网关的容器化部署有任何建议或问题,欢迎在项目的GitHub仓库中提出issue或PR。
点赞、收藏、关注三连,获取更多Shenyu网关的使用技巧和最佳实践!下期预告:Shenyu网关的性能优化与监控方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



