欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

程序员文章站 2022-04-18 20:57:35
...

前言

我们传统的部署方法是把源码打成jar包,然后上传至虚拟机并拷贝至JDK容器,对于数量众多的微服务,这样的部署方式显然是不可取的,所以我们必须要掌握Maven插件自动部署,下面说一下具体的部署步骤

部署步骤

配置maven环境变量

  1. 新建系统变量

如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

  1. 在Path中追加 %MAVEN_HOME%\bin

如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

  1. 配置成功,在cmd 命令窗口输入 mvn -version 即可出现如下图
    如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

修改Docker配置

  1. 修改宿主机的docker配置,让其docker服务可以远程访问, 暴露的docker服务端口号 2375
vi /lib/systemd/system/docker.service
  1. 在 ExecStart= 后添加加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

  1. 刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
  1. 验证是否生效,访问:http://192.168.50.140:2375/version
    注:192.168.50.140 是我虚拟机的IP
    如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

配置maven的 settings.xml 文件

  1. 在servers节点下添加子标签
<server>
 <!--maven的pom中可以根据这个id找到这个server节点的配置--> 
 <id>docker-aliyun</id>
 <!--这里是在阿里云注册的账号-->
 <username>改为阿里云注册的账号</username>
 <!--这里是镜像的固定密码(注意不是登录密码)-->
 <password>改为阿里镜像仓库的固定密码</password>
</server>

注: 这里特别注意一下,上面的密码是镜像仓库的密码,不是登录密码,如果没有设置,可以登录阿里云设置 传送门:阿里云镜像仓库
如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

配置服务的 pom.xml 文件

  1. 添加插件配置
    <build>
        <finalName>app</finalName>
        <plugins>
            <!-- 插件一定要在其他构建插件之上,否则打包文件会有问题。 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <fork>true</fork>
                    <executable>C:\Program Files\Java\jdk1.8.0_131\bin\javac</executable>
                </configuration>
            </plugin>
            <!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!--生成镜像相关配置-->
                <configuration>
                    <!-- 将forceTags设为true,这样就会覆盖构建相同标签的镜像  -->
                    <forceTags>true</forceTags>
                    <!-- 远程 docker 宿主机地址, 端口号是/lib/systemd/system/docker.service所暴露的端口号, 生成镜像到docker中 -->
                    <dockerHost>http://192.168.50.140:2375</dockerHost>
                    <!--内容是之前修改的maven的settings.xml配置文件中,server节点的id-->
                    <serverId>docker-aliyun</serverId>
                    <!-- 镜像名:阿里云镜像仓库地址
                                ${project.artifactId}引用当前工程名,
                                ${project.version}引用当前工程版本号
                                registry.cn-hangzhou.aliyuncs.com/mengxuegu/demo:0.0.1-SNAPSHOT -->
                    <imageName>registry.cn-beijing.aliyuncs.com/ayanweiqiang/${project.artifactId}:${project.version}</imageName>
                    <!--基础镜像-->
                    <!--<baseImage>jdk1.8</baseImage>-->
                    <baseImage>java</baseImage>
                    <!--类似于Dockerfile的ENTRYPOINT指令-->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>  <!-- 指定打包的资源文件 -->
                            <targetPath>/</targetPath> <!-- 指定要复制的目录路径,这里是当前目录 -->
                            <directory>${project.build.directory}</directory> <!-- 指定要复制的根目录,这里是target目录 -->
                            <include>${project.build.finalName}.jar</include> <!-- 这里指定最后生成的jar包 -->
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

上面需要修改的是你JDK版本和路径、你的虚拟机地址、你的阿里云镜像仓库地址

  1. 输入 mvn clean package docker:build -DpushImage 开始打包和上传
    如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

  2. 在虚拟机上查看我们的镜像是否已经部署成功

docker images

如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

  1. 根据镜像ID 启动容器 ,如果对docker操作不是很熟悉的可以看我上篇博客 传送门:Docker 入门以及简单的操作
docker run -it --name=config_server -p 6001:6001d555ca0ba449 /bin/bash

可见我们在docker容器上启动和在idea上启动界面是一样的,启动成功之后我们就可以正常访问了
如何将Spring Cloud项目(微服务)自动化部署到Docker容器上(图文详解)

总结

通过maven插件部署结合容器技术确实方便了很多,如有对上述步骤有问题的同学,欢迎交流学习!

相关标签: 【Java】