一 环境搭建

1 需要下载docker

2下载jdk1.8并配置环境变量

2.1下载所需版本的.tar.gz安装包

Oracle官网即可下载,选择好对应版本,可以先下到主机,然后上传到虚拟机的Linux上。(注意:Oracle现在下载jdk需要注册登录,可以提前注册个账号)

springboot 发布到docker 教程 将springboot项目部署到docker_spring boot

2.2 Linux下创建目录用来存放jdk文件

一般在/usr/local/下创建一个java目录来存放jdk

cd /usr/local
mkdir java
2.3 将在本地下载好的jdk压缩包上传到Linux的/usr/local/目录上
2.4 解压缩jkd安装包

接下来解压jdk-8u311-linux-x64.tar.gz压缩包

tar -zxvf jdk-8u311-linux-x64.tar.gz

通过ls命令可以看到生成了一个jdk1.8.0_311目录:

[root@localhost java]# ls
jdk1.8.0_311  jdk-8u311-linux-x64.tar.gz
2.5 配置java环境

使用vim/vi编辑profile文件

vim /etc/profile

在文件最下方添加以下配置:

export JAVA_HOME=/usr/local/java/jdk1.8.0_241
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

保存并退出后刷新一下配置:

source /etc/profile

这样java环境就配置完成了

同样的,输入java -version可以查看到java的版本信息

3 安装Maven并配置

二 添加Docker支持

在 pom.xml中添加Docker镜像名称及添加 Docker插件。

在<properties> 标签里添加。

<properties>   
     <docker.image.prefix>springboot</docker.image.prefix> 
</properties>

在<build> --> <plugins> 标签里添加

<!-- 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>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>

编写Dockerfile文件
在Springboot工程目录src/main下创建文件夹命名为docker文件,并在docker中创建Dockerfile 文件,用来说明如何来构建镜像。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
# 需要修改docker-0.0.1-SNAPSHOT.jar为你的jar 例如 my-project-new-0.0.1-SNAPSHOT.jar 项目名-0.0.1-SNAPSHOT.jar
ADD docker-0.0.1-SNAPSHOT.jar app.jar  
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

FROM指令指定一个已经存在的镜像,告诉Docker后续的指令都是在这个基础上进行的。例如:FROM java:8表示使用 Jdk1.8 环境为基础镜像进行构建镜像。

VOLUME ,VOLUME 指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录

ADD ,拷贝文件并且重命名

ENTRYPOINT,为了缩短Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为ENTRYPOINT。

三、部署Spring Boot工程
将主机的项目代码拷贝服务器或虚拟机中,在虚拟机中进入项目路径。如编者是“/usr/local/projects/hellotest”.

在项目路径下运行终端,通过maven指令进行打包

mvn package

若报错中包含以下这一句

Unknown host maven.aliyun.com: 域名解析暂时失败 -> [Help 1]

则可以尝试如下修改

在终端输入指令vim /etc/resolv.conf然后加入nameserver 114.114.114.114

执行如下指令,运行项目

#要解压你的target文件下的jar包
java -jar target/hellotest-0.0.1-SNAPSHOT.jar

如出现以下界面,代表项目启动成功,说明环境配置没有问题,接下来可以使用Dockerfile构建镜像。

执行如下指令,构建Docker镜像

mvn package docker:build

可以看到docker镜像构建成功,仔细看日志,会发现四个步骤和Dockerfile中的指令是一一对应的。

使用docker images命令查看构建好的镜像:
运行docker镜像

docker run -d -p 8080:8080 -t springboot/hellotest

在虚拟机浏览器进行访问,可以看到返回结果,说明部署成功。