IDEA + docker 发布 Spring-boot项目
准备环境
1.Spring-boot项目
2.Linux需配备docker
一、Spring-boot项目
1.一个简单Spring-boot项目demo,目录结构如下:
2.注意:
二、整合docker打包插件
1 .在pom文件中,添加plugin:
核心代码如下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!--设置docker镜像的前缀“springboot”-->
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--加入maven插件“docker-maven-plugin”-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<configuration>
<imageName>${docker.image.prefix}/${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>
</plugins>
</build>
2.编写Dockerfile文件
在main文件下创建一个docker文件夹;并在docker文件夹下,编写Dockerfile文件。
Dockerfile文件内容如下:
核心代码如下:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD spring-boot-01-helloworld-quick-2.0.4.RELEASE.jar spring-boot-docker.jar
RUN sh -c 'touch /spring-boot-docker.jar'
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /spring-boot-docker.jar" ]
Dockerfile文件:
1).FROM :指令用于指定其后构建新镜像所使用的基础镜像;
2).VOLUME:用于创建挂载点,即向基于所构建镜像创始的容器添加卷;
3).ADD:构建镜像,在run时,将我的 spring-boot-01-helloworld-quick.jar 构建成 名为 spring-boot-docker.jar镜像。
你可以学习更多关于Dockerfile 的命令here.
3.打包项目
执行package命令,打包项目
三、在服务器(Linux)上部署项目
1.检查docker环境
[root@VM_0_4_centos ~]# docker -v
Docker version 1.13.1, build 8633870/1.13.1
[root@VM_0_4_centos ~]#
2.新建一个文件夹用于存放jar包和Dockerfile文件
[root@VM_0_4_centos ~]# docker -v
Docker version 1.13.1, build 8633870/1.13.1
[root@VM_0_4_centos ~]# mkdir myproject
[root@VM_0_4_centos ~]# ls -l
total 4
drwxr-xr-x 2 root root 4096 Nov 23 15:19 myproject
[root@VM_0_4_centos ~]#
3.把本地的jar包和Dockerfile文件上传到服务器(Linux)上
[root@VM_0_4_centos ~]# docker -v
Docker version 1.13.1, build 8633870/1.13.1
[root@VM_0_4_centos ~]# ls -l
total 4
drwxr-xr-x 2 root root 4096 Nov 23 15:21 myproject
[root@VM_0_4_centos ~]# cd myproject
[root@VM_0_4_centos myproject]# ls -l
total 15848
-rw-r--r-- 1 root root 285 Nov 23 15:21 Dockerfile
-rw-r--r-- 1 root root 16201528 Nov 23 15:21 spring-boot-01-helloworld-quick-2.0.4.RELEASE.jar
[root@VM_0_4_centos myproject]#
4.构建镜像并运行
4.1.在该myproject文件下 指令:docker build -t myproject .
注意: -t 代表要构建的镜像的tag; . 代表当前目录,也就是Dockerfile所在的目录。
[root@VM_0_4_centos myproject]# ls -l
total 15848
-rw-r--r-- 1 root root 285 Nov 23 15:21 Dockerfile
-rw-r--r-- 1 root root 16201528 Nov 23 15:21 spring-boot-01-helloworld-quick-2.0.4.RELEASE.jar
[root@VM_0_4_centos myproject]# docker build -t myproject .
Sending build context to Docker daemon 16.2 MB
Step 1/5 : FROM frolvlad/alpine-oraclejdk8:slim
---> 3ee5e1ce00fc
Step 2/5 : VOLUME /tmp
---> Running in 21642af47107
---> cd58fc91999d
Removing intermediate container 21642af47107
Step 3/5 : ADD spring-boot-01-helloworld-quick-2.0.4.RELEASE.jar spring-boot-docker.jar
---> 6a3d7f96f711
Removing intermediate container d863bc08c15c
Step 4/5 : RUN sh -c 'touch /spring-boot-docker.jar'
---> Running in e8edd6aaff9f
---> 5147fca32df2
Removing intermediate container e8edd6aaff9f
Step 5/5 : ENTRYPOINT sh -c java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /spring-boot-docker.jar
---> Running in 3113492e6d80
---> 4d3f35ae2042
Removing intermediate container 3113492e6d80
Successfully built 4d3f35ae2042
[root@VM_0_4_centos myproject]#
4.2.查看镜像:docker images
4.3.运行容器,启动项目
执行命令:docker run -d -p 8181:8181 --name myproject myproject
查看正在运行的容器:docker ps
注意:-p 映射端口时,将项目访问的端口映射到主机的端口
你可以学习更多关于**docker ** 的命令here.