SpringCloud+Docker项目部署经验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud+Docker项目部署经验相关的知识,希望对你有一定的参考价值。

参考技术A 1. Linux 服务器安装宝塔面板

2.使用ssh root@ip 的方式远程连接

3.安装Docker ,参考: http://www.xiefeng.org/?id=3 中的Docker安装

1.项目中 eureka 配置需加上: prefer-ip-address: true 具体配置列如:

2.其余微服务的yml文件中也需配置:prefer-ip-address: true 具体配置列如:

3.微服务的pom.xml文件,配置打包插件,具体配置列如:

4.编译项目并打包 ,使用idea自带的打包方式 : 右侧Maven按钮 -> 项目[root]->双击package ->打包成功,获取jar包;

1.在服务器非系统盘符中(如果有)创建对应文件夹,以项目为例如下:

1)  mhxs-eureka-server (eureka注册与发现)

2)  mhxs-web-comment-api (客户端)

3)  mhxs-web-novel-api (客户端)

4)  mhxs-web-user-api (客户端)

5)  mhxs-gateway (网关zuul,集成了swagger2)

2.上传对应的jar文件到对应对应的文件夹中.

3.在对应文件夹中的分别创建Dockerfile文件,并编辑内容例如:

注1:其中微服务jar包修改了版本(如:xx-1.jar,xxx-2.jar,xxx-3.jar,....),对应文件夹下的同理修改,目的是为了方便后期版本回退.

注2:注意修改对应的jar名称和端口

4.编写创建镜像的脚本文件 : build_images.sh 和 相应jar文件夹一级,具体内容列如:

注:其中modules中的为对应的 jar文件夹名称

5.使用ssh连接到linux服务器,进入到build_image.sh 文件夹下,创建Docker镜像,操作如下:

6.查看镜像

7.在jar包文件夹同一层中创建启动镜像脚本:start_services.sh具体内容例如:

注1: 其中CODE用于检测对应服务是否已经启动成功,需根据具体项目修改.

注2: 启动方式分为全顺序启动和非全顺序启动

8: 查看镜像容器:

9:更新jar:

10.查看日志,有两种方法

1)直接通过宝塔面板可以找到对应日志位置:

2) 使用命令查看

docker初体验:Docker部署SpringCloud项目eureka-server

Docker部署SpringCloud项目eureka-server

1 创建eureka-server工程

创建父工程cloud-demo,其pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/>
    </parent>

    <groupId>top.flygrk.ishare</groupId>
    <artifactId>cloud-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>cloud-eureka-server</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

创建cloud-eureka-server模块,其格式如下:

file

pom.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud-demo</artifactId>
        <groupId>top.flygrk.ishare</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-eureka-server</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>


    <build>
        <finalName>eureka-server</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- tag::plugin[] -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>/test/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- end::plugin[] -->
        </plugins>
    </build>

</project>

2 eureka-server工程打包

使用maven对cloud-eureka-server模块打包,结果如下:

file

3 上传eureka-server.jar到服务器

上传eureka-server.jar到服务器路径/app/eureka-server:

file

4 编写Dockerfile文件

编写Dockerfile内容如下:

FROM java:8
VOLUME /tmp
ADD eureka-server.jar app.jar
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

5 打包eureka-server镜像

在/app/eureka-server目录下,执行如下命令进行docker镜像打包:

docker build -t eureka_v1.0.0 .

6 查看docker镜像

查看系统上的docker镜像,使用docker images命令:

file

7 运行eurake镜像

使用下面的命令启动eureka镜像:

docker run -d --name eureka-server -p 8761:8761 c4bfd23fe99d

8 查看docker镜像运行情况

使用docker ps查看docker镜像运行情况:

docker ps -a

file

8 查看docker eureka-server日志

使用下面的命令查看eureka-server日志:

docker logs --since 2019-12-18T09:50:15 eureka-server

file


Blog:

以上是关于SpringCloud+Docker项目部署经验的主要内容,如果未能解决你的问题,请参考以下文章

如何使用docker部署springcloud???

docker初体验:Docker部署SpringCloud项目eureka-server

Docker+jenkins自动化部署SpringCloud微服务项目

使用Docker Compose部署SpringCloud项目docker-compose.yml文件示例

SpringCloud教程 | 第十一篇: docker部署spring cloud项目

linux12Devops -->11Jenkins+Docker+SpringCloud微服务持续集成