利用Dockerfile发布Springboot项目

前言

利用Dockerfile发布springboot项目有两种方式,原理都是一样的,我们可以在idea中连接docker直接发布,详情可在b站搜索相关视频,Dockerfile参考如下图所示,在这里我们说的是怎么直接手动在服务器上进行打包容器。
利用Dockerfile发布Springboot项目_第1张图片

表明启动类

在自己的springboot项目中找到maven配置文件pom.xml,

    <build>
        <plugins>
            <plugin>

                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>

                    <mainClass>com.demo.itcabinet.cabinet.CabinetServiceApplication</mainClass>

                </configuration>
            </plugin>
        </plugins>
    </build>
 这里要注意的是<bulid><plugins>等标签是不允许同时存在两个的,需要找到相应的层级,主要把<mainclass>标签加入配置文件即可

利用maven生成jar文件

点击右侧的maven,然后再依次点击clean和package,会生成一个黄色的target文件夹。我们需要复制后缀为.jar的这个文件出来
利用Dockerfile发布Springboot项目_第2张图片
利用Dockerfile发布Springboot项目_第3张图片

编写Dockerfile文件,并创建镜像

使用云基础镜像(容易报错)

新建无格式文本(新建一个txt,删去后缀),命名为Dockerfile,注意大小写不要错误,粘贴如下代码:

# 基础镜像使用Java
FROM java:8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD sql-father-backend-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

到Dockerfile当前目录下,使用命令:

# cabinet    镜像名称
# 此处没有标明版本号,会自动将TAG设置为latest
# 注意不要遗漏 .
 docker build -t cabinet .

注意:
这个Dockerfile使用的基础镜像是可以使用云镜像java:8,但是很有可能会失败,可以尝试java:11,java:11.0.06等,但也很有可能失败,出现不存在景象或者没有登录之类的的报错

使用本地镜像(推荐)

创建本地Java8镜像的教程

1、利用自己的方式下载一个linux-jdk到服务器,或者自己本机下载后使用Xftp 7等ftp工具上传,我下载的是jdk-8u192-linux-x64.tar.gz

2、将jdk和一个新建的Dockerfile放置在同一文件夹内,注意文件夹内不要存在其他任何文件

3、编写Dockerfile文件如下,根据注释对文件进行修改,主要是更改编写人和jdk名称:

# 设置docker的运行环境
FROM centos:7
# 编写人
MAINTAINER liu

ENV MYPATH /usr/local

WORKDIR $MYPATH

# 安装vim编辑器

RUN yum -y install vim

# 安装ifconfig命令查看网络IP

RUN yum -y install net-tools

# 安装java8及lib库

RUN yum -y install glibc.i686

RUN mkdir /usr/local/java
# 将宿主机的文件拷贝到容器的具体目录中。这里使用ADD,拷贝后自动解压,如果不需要解压,可以使用COPY
ADD jdk-8u192-linux-x64.tar.gz /usr/local/java/
#  配置jdk环境
ENV JAVA_HOME /usr/local/java/jdk.8.0_192
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 80

CMD echo $MYPATHc
CMD echo "success---------ok"
CMD /bin/bash

4、保存后,在当前目录下使用如下命令

# java8    镜像名称
# 1.5    镜像TAG/版本
# 注意不要遗漏 .
docker build -t java8:1.5 .

5、查看本地镜像库

docker images

可以看到如下信息,本地基础镜像创建成功!

请添加图片描述

回到之前项目文件目录,编写Dockerfile文件

# 基础镜像使用Java
FROM java8:1.5
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD sql-father-backend-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

到Dockerfile当前目录下,使用命令:

# cabinet    镜像名称
# 此处没有标明版本号,会自动将TAG设置为latest
# 注意不要遗漏 .
 docker build -t cabinet .

查看本地镜像库

docker images

发现镜像已存在
请添加图片描述

根据镜像生成容器

# 将cabinet运行为p_demo1容器
# 映射为8080
# 注意本机防火墙与云服务商安全组的开放
docker run -p 8080:8080 --name p_demo1 -d cabinet

注意:
如果docker ps发现有个容器一会就没了,使用docker logs p_demo1查看名为p_demo1容器的日志

你可能感兴趣的:(spring,boot,java,后端,docker,centos)