docker→springboot→jar
准备
1.centos7,安装docker,准备一个springboot的jar包
@RestController
public class DockerController {
@RequestMapping("/getStrInfo")
public String getStrInfo(){
return "Hello packageDocker!";
}
}
2.在main目录下建一个docker包存放dockerFile
3.编辑dockerFile
# 使用 JDK 8 环境为基础环境,如果镜像不是本地的将会从 DockerHub 进行下载
FROM java:8
# 作者
MAINTAINER Jansens <xxx@qq.com>
# 在宿主机的 /var/lib/docker 目录下创建一个临时文件并把它链接到 tomcat 容器的工作目录 /tmp目录
VOLUME /tmp
# 复制文件并重命名 spring-boot-docker-1.0.jar 表示打包后的 jar 包名称
ADD dockerPackge-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
# 为了缩短Tomcat启动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
以上准备就完成了
打包镜像
1.连接centos7,新建一个文件夹,我这里目录为/opt/app
2.将jar包和编写的dockerFile文件放置在该目录下
[root@localhost app]# ls
Dockerfile dockerPackge-0.0.1-SNAPSHOT.jar
3.打包镜像(注意后面有个点,-t 表示给容器命名)
[root@localhost app]# docker build -t springbootdemodocker .
需要注意的是容器名字不能大写否则会出现如下错误
[root@localhost app]# docker build -t springbootDemoDocker .
invalid argument "springbootDemoDocker" for t: Error parsing reference: "springbootDemoDocker" is not a valid repository/tag: repository name must be lowercase
See 'docker build --help'.
若出现如下卡卡顿不动现象(一般是第一次),则ctrl+c结束重新执行build就行
正确build如下
通过docker images查看容器
以上就是容器部署过程
查看
1.运行容器
说明:
-d参数是让容器后台运行
-p 是做端口映射,此时将服务器中的8085端口映射到容器中的9000(springboot项目中port端口配置的是9000)端口
[root@localhost app]# docker run -d -p 8085:9000 springbootdemodocker
2.访问请求(ip+端口)
总结
本文采用发是jar包,前后端分离下的分开部署。对于前端页面可以用nginx配置或者用tomcat单独部署,最好做成页面静态化。上述也可改为speingbootWeb应用部署,打成war包。
具体思路为:(仅作参考,一种思路我也没实践过但可行,有看过对应文章)
把上述项目改造为springbootWeb→centos7配置jdk和maven(这里用maven的mvn package xxx打包,对应百度配置即可这里不做阐述,需要注意的是maven配置镜像加速和本地仓库)→docker安装tomcat→docker启动tomcat并进入其webapps目录拷贝放入war包→运行启动→访问→上传至docker私有仓库→其他服务器从私服拉取并运行。(感觉有点问题具体得查漏补缺)
build部分不管,那是idea配置docker插件部署
<?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 https://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.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--这是一个测试docker打包spingbootWeb-->
<groupId>com.example.docker</groupId>
<artifactId>dockerPackge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dockerDemoPackge</name>
<!--打包war包,jar包删除这一行(linux的docker需要安装tomcat并将war包放入对应webapps中,麻烦,不如静态资源单独抽出来)-->
<!-- <packaging>war</packaging>-->
<description>dockerPackge project for Spring Boot in test</description>
<properties>
<java.version>1.8</java.version>
<!--规定docker打包后镜像名称前缀-->
<docker.image.prefix>springbootDocker</docker.image.prefix>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--如果是web,移除内置tomcat,否则就注释掉-->
<!--<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>-->
</dependency>
<!--web工程增加servlet-->
<!--<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--添加docker插件打包开始-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--镜像名称,从上述配置的具体内容一致-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在目录,缺省为target-->
<directory>${project.build.directory}</directory>
<!--jar 包名,缺省为 $project.artifactId}-${project.version}-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!--添加docker插件打包结束-->
</plugins>
</build>
</project>
本文参考链接:www.jianshu.com/p/397929dbc…