## 部署所需 * java环境 * mysql数据库 * redis服务 * docker服务 * docker镜像库 * nacos服务 (参考地址:https://github.com/nacos-group/nacos-docker) (需要修改官网的docker-compose将network设置成与springblade的docker-compose设置的一致) ## 编写docker脚本 我们以gateway为例,脚本如下 ~~~ FROM anapsix/alpine-java:8_server-jre_unlimited MAINTAINER smallchill@163.com RUN mkdir -p /blade/gateway WORKDIR /blade/gateway EXPOSE 80 ADD ./target/blade-gateway.jar ./app.jar CMD java -Djava.security.egd=file:/dev/./urandom -jar app.jar --spring.profiles.active=test ~~~ ## 引入docker-maven-plugin打包推送至镜像库 * 使用docker-harbor作为私有库,需要配置maven,找到setting.xml( `linux可以使用find / -name settings.xml`)加入以下配置 ~~~ <servers> <server> <id>192.168.186.129</id> <username>admin</username> <password>Harbor12345</password> <configuration> <email>smallchill@163.com</email> </configuration> </server> </servers> <pluginGroups> <pluginGroup>com.spotify</pluginGroup> </pluginGroups> ~~~ * 在每个需要构建子项目的pom.xml下加入配置,内容可参考如下(无需修改,直接复制) ~~~ <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>${docker.plugin.version}</version> <configuration> <imageName>${docker.registry.url}/blade/${project.artifactId}:${project.version}</imageName> <dockerDirectory>${project.basedir}</dockerDirectory> <dockerHost>${docker.registry.host}</dockerHost> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <registryUrl>${docker.registry.url}</registryUrl> <serverId>${docker.registry.url}</serverId> <pushImage>true</pushImage> </configuration> </plugin> </plugins> </build> ~~~ * Harbor创建一个新的项目,命名为:`blade`。再新建一个对应的`blade`账号,分配好角色用于接受推送过来的镜像。 * 在项目根目录下执行构建命令 `mvn clean package docker:build` 等待推送完毕 * 登录harbor查看docker镜像已经推送成功 ![](https://box.kancloud.cn/498e0604a569ed104281b416ee2761f3_1009x589.png) ## 使用docker-compose启动服务 * 在工程根目录的docker-compose.yml下加入配置,内容可参考如下 ~~~ blade-gateway: image: "${REGISTER}/blade/blade-gateway:${TAG}" ports: - 80:80 networks: blade_net: ipv4_address: 172.30.0.81 ~~~ * 将下图文件拷贝至部署文件夹 ![](https://box.kancloud.cn/3618bb97a14630c350f800bd7c9d0f9e_472x162.png) ![](https://box.kancloud.cn/cfd2ca51473556451f18f2e802ea27e2_1288x458.png) * 进入该目录,给`deploy.sh`赋予执行权限 `chmod 744 deploy.sh` * 部署执行`docker ps` 查看目前启动的docker服务 ![](https://box.kancloud.cn/22fb2c6f4ac4388b9f2fe4ee04ab3b1c_1727x214.png) * 执行`cd /docker/script`进入目录后依次执行: 1. `./deploy.sh port` 开启端口 2. `./deploy.sh mount` 放置挂载文件 3. `./deploy.sh base` 启动基础模块(这时需要打开nacos进行配置文件的配置) ![](https://box.kancloud.cn/5d3522a2476db7f919e2010b506d15bd_494x193.png) 4. `./deploy.sh modules` 启动业务模块 ![](https://box.kancloud.cn/b0bf5631148952d60c6c44bf02eaec4c_453x234.png) * 再次执行` docker ps` 查看已启动的docker服务,发现服务都已启动成功 ![](https://box.kancloud.cn/4219e5fae86af1a8fb56c8a43383a8b5_1916x742.png) * 若都成功则打开nacos界面查看对应部署的服务 * 打开聚合文档查看接口调用,以授权模块为例 * 发现调用都没有问题,基于docker的部署已经成功 <br> ## 结尾语 学习了三种部署方式后,相信大家很快就能掌握,若在linux平台,非常推荐使用docker来部署。等到后期服务器数量增加后,就需要使用`Kubernetes`(简称K8S),来管理docker集群。大家需要不断学习与实战操练,才能在开发与部署的时候得心应手。 好了本期的文档教程到这里就结束了,后续更多有用的知识点,请看下回分解~