springboot项目改造成springcloud微服务并docker部署

一、改造项目

1.1 修改pom.xml

<properties>节点下添加
---------------------------------------------------------
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
<docker.image.prefix>oa</docker.image.prefix>  #这里oa需要改成自己项目的名称
----------------------------------------------------------
<dependencies> 节点下添加
----------------------------------------------------------
        <!-- springcloud jar -->
        <!-- 注册中心 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!-- feign服务调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- ribbon服务调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
        <!-- hystrix熔断器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <!-- 断路器Dashboard监控仪表盘 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- 网关 服务中不能添加网关的jar包,否则项目启动会报错Unable to start embedded Tomcat -->
        <!--        <dependency>-->
        <!--            <groupId>org.springframework.cloud</groupId>-->
        <!--            <artifactId>spring-cloud-starter-gateway</artifactId>-->
        <!--        </dependency>-->
        <!-- sleuth 日志埋点 -->
        <!--        <dependency>-->
        <!--            <groupId>org.springframework.cloud</groupId>-->
        <!--            <artifactId>spring-cloud-starter-sleuth</artifactId>-->
        <!--        </dependency>-->
        <!-- zipkin链路追踪  包含了sleuth包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
        <!--配置中心客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>

----------------------------------------------------------------------------
plugin修改为:
--------------------------------------------------------------------------------------------------
 <!-- tag::plugin[] -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.3</version>
                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
					# 要推送的docker 服务器地址
                    <dockerHost>http://10.4.237.123:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>

--------------------------------------------------------------------------------------------------

1.2 编辑dockerfile

在项目src/main下创建docker文件夹并新建dockerfile文件:

dockerfile文本内容为:
----------------------------------------------------------------------------------------
# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,handcuffs-reg-0.0.1-SNAPSHOT.jar这里是maven打包后的名字
ADD sys-id-java.jar sys-id-java.jar
RUN bash -c 'touch /sys-id-java.jar'
# 配置容器启动后执行的命令
ENTRYPOINT  ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/sys-id-java.jar"]
EXPOSE 8761
----------------------------------------------------------------------------------------

1.3 idea安装docker插件

打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。安装后重启Idea。
重启后配置docker,连接到远程docker服务。从File->Settings->Build,Execution,Deployment->Docker打开配置界面
在这里插入图片描述
点击+号添加一个docker配置,输入Name和Engine API URL,URL是docker服务地址,需要docker开启远程连接功能。

1.4 application添加注解

@EnableFeignClients //feign
@EnableDiscoveryClient
@EnableCircuitBreaker // 熔断器注解
@EnableHystrixDashboard // 断路器Dashboard监控仪表盘
修改完如图:springboot项目改造成springcloud微服务并docker部署_第1张图片

二、服务器配置

2.1 docker配置

修改服务器中docker配置文件:
主要是在[Service]这个部分,加上下面两个参数

# vim /usr/lib/systemd/system/docker.service
[Service]
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

修改之后如图:
springboot项目改造成springcloud微服务并docker部署_第2张图片
配置阿里镜像地址:

[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# ll
total 20
drwxr-xr-x. 5 root root    72 Jul 26 07:17 certs.d
-rw-r--r--. 1 root root    57 Jul 26 08:01 daemon.json
-rw-------. 1 root root   244 Jul 26 07:17 key.json
-rw-r--r--. 1 root root 10837 May  1 07:52 seccomp.json
[root@localhost docker]# vi daemon.json 
-----------------------------------------------------------------------------------
{
        "registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
----------------------------------------------------------------------------------
[root@localhost docker]# systemctl daemon-reload 
[root@localhost docker]# systemctl restart docker

三、打包镜像部署

双击idea的package打包就会自动打包镜像并将镜像推动到配置的目标服务器中
docker插件配置地址和pom.xml地址要保持一致。
服务器 docker images查看镜像id
启动服务:docker run -d --net host --name oa-server -p 8092:8092 镜像id

docker ps 查看启动的镜像

你可能感兴趣的:(代码文档)