当前位置:   article > 正文

Docker使用(八) —docker-compose部署SpringBoot(jar包)_dockercompose部署springboot

dockercompose部署springboot

1、前提安装Docker

在使用docker-compose之前,需要先搭建docker环境,参考《Linux下Docker安装部署》

2、安装docker-compse

使用curl下载:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 1

授权:

chmod +x /usr/local/bin/docker-compose
  • 1

查询版本:

docker-compose version
  • 1

在这里插入图片描述

3、官方体验使用

根据官网案例体验docker-compose编排过程:https://docs.docker.com/compose/gettingstarted/
官网案例,进行 快速入门

4、部署jar包

4.1、准备java工程

搭建SpringBoot项目,创建一个Controllerapplication.properties文件
测试部署两个jar服务:默认端口分别为8808、8809,两个jar可以做对比更便于理解;

application.properties:

# 创建几个变量,用于验证docker启动jar时对变量进行修改
server.port=8088
server.name="boot-demo"
  • 1
  • 2
  • 3

Controller:

@RestController
public class Controller {
    @Value("${server.name}")
    private String name;

    @GetMapping("test")
    public String main() throws Exception {
        return "Name:" + name;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.2、创建工作目录

分别创建boot-demo-8088与boot-demo-8089存放两个不同的jar包

mkdir -p /home/docker-compose/boot-demo-8088 \
mkdir -p /home/docker-compose/boot-demo-8089 \
mkdir -p /home/docker-compose/boot-demo-8088/logs \
mkdir -p /home/docker-compose/boot-demo-8089/logs
  • 1
  • 2
  • 3
  • 4

4.3、创建Dockerfile

分别在boot-demo-8088与boot-demo-8089目录下创建Dockerfile,内容如下:

boot-demo-8088:

vim /home/docker-compose/boot-demo-8088/Dockerfile
  • 1
FROM java:8

RUN mkdir -p /usr/local/application/logs /usr/local/application/jar

COPY *.jar /usr/local/application/jar/application.jar

#定义时区参数
ENV TZ=Asia/Shanghai
	
#设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone

ENV SERVER_NAME="boot-demo-8088"

ENTRYPOINT exec java -Dserver.name=${SERVER_NAME} -jar /usr/local/application/jar/application.jar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

boot-demo-8089:

vim /home/docker-compose/boot-demo-8089/Dockerfile
  • 1
FROM java:8

RUN mkdir -p /usr/local/application/logs /usr/local/application/jar

COPY *.jar /usr/local/application/jar/application.jar

#定义时区参数
ENV TZ=Asia/Shanghai
	
#设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone

ENV SERVER_NAME="boot-demo-8089"

ENTRYPOINT exec java -Dserver.name=${SERVER_NAME} -jar /usr/local/application/jar/application.jar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4.4、创建docker-compose.yaml

分别在boot-demo-8088与boot-demo-8089目录下创建docker-compose.yaml,内容如下:

boot-demo-8088:

vim /home/docker-compose/boot-demo-8088/docker-compose.yaml
  • 1
version: "3.8"
services:
	# 服务名称
	boot-demo-8088:
	 # Dockerfile所在目录(. 表示同级目录下)
	 build: .
	 # 镜像名称
	 image: boot-demo-8088
	 # 容器名称
	 container_name: boot-demo-8088
	 restart: always
	 # 端口
	 ports:
	      - "8088:8088"
	 # 挂载
	 volumes:
	      - /home/server/boot-demo-test/boot-demo-8088/logs:/usr/local/application/logs
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

boot-demo-8089:

vim /home/docker-compose/boot-demo-8089/docker-compose.yaml
  • 1
version: "3.8"
services:
	# 服务名称
	boot-demo-8089:
	 # Dockerfile所在目录(. 表示同级目录下)
	 build: .
	 # 镜像名称
	 image: boot-demo-8089
	 # 容器名称
	 container_name: boot-demo-8089
	 restart: always
	 # 端口
	 ports:
	      - "8089:8089"
	 # 挂载
	 volumes:
	      - /home/server/boot-demo-test/boot-demo-8089/logs:/usr/local/application/logs
     # 与boot-demo-8088相比修改Dockerfile中的ENV环境变量(多个变量不加`-`直接换行即可,参数不能有空格)
	 environment:
	      SERVER_NAME: "this-is-boot-demo-8089"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

4.5、上传 jar包

将打包后的jar复制到服务的相应目录下
注意: 在此之前一定要保证,项目在本地能够运行

目录结构如下:
在这里插入图片描述

5、创建启动脚本

boot-demo-8088:

vim /home/docker-compose/boot-demo-8088/run.sh
  • 1
#!/bin/sh
export LANG="en_US.UTF-8"
delImage=`docker images | grep -E "boot-demo-8088" | awk '{print $3}'` 
echo $delImage

docker stop boot-demo-8088

sleep 2
docker rm boot-demo-8088

sleep 2
docker rmi $delImage
sleep 2
docker-compose up -d --build
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

boot-demo-8089:

vim /home/docker-compose/boot-demo-8089/run.sh
  • 1
#!/bin/sh
export LANG="en_US.UTF-8"
delImage=`docker images | grep -E "boot-demo-8089" | awk '{print $3}'`
echo $delImage

docker stop boot-demo-8089

sleep 2
docker rm boot-demo-8089

sleep 2
docker rmi $delImage
sleep 2
docker-compose up -d --build
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

说明:
docker images | grep -E "boot-demo-8089" | awk '{print $3}'中的boot-demo-8089为镜像名称
docker stop|rm boot-demo-8089中的boot-demo-8089为容器名称

6、执行脚本

启动boot-demo-8088:

sh /home/docker-compose/boot-demo-8088/run.sh
  • 1

启动boot-demo-8089:

sh /home/docker-compose/boot-demo-8089/run.sh
  • 1

7、测试访问

我们在boot-demo-8088boot-demo-8089项目中的docker-compose.yaml,有一个区别就是boot-demo-8089中设置了environment参数,该参数的意义是,修改DockerfileENV定义的环境变量;

区别:
在这里插入图片描述
测试结果:
在这里插入图片描述

8、更新Jar包

更新8088项目中的Controller代码:

	// 在原有代码基础上,加入"更新了Jar包:"
    @GetMapping("test")
    public String main() throws Exception {
        return "更新了Jar包:Name:" + name + ",Max:" + max + ",Min:" + min;
    }
  • 1
  • 2
  • 3
  • 4
  • 5

jar更新了代码,那么我们可以重新打包,并且上传到/home/docker-compose/boot-demo-8088

上传新的jar到/home/docker-compose/boot-demo-8088目录下,执行以下命令:

sh run.sh
  • 1

再次访问:
在这里插入图片描述

9、下载Jar源码

下载地址:https://download.csdn.net/download/zhuocailing3390/59641879

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/220951
推荐阅读
相关标签
  

闽ICP备14008679号