CentOS7中使用Dockerfile部署后台jar包

场景

使用Dockerfile定制镜像来部署Tomcat项目:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99105626

在上面使用Tomcat部署项目之外,还可以使用Dockfile基于openjdk部署jar包项目。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、新建SpringBoot项目,使用基本的web项目模板,然后添加一个get接口.

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/badao")
public class DemoController {

    @GetMapping("/list")
    public String list()
    {
        System.out.println("公众号:霸道的程序猿");
        return "公众号:霸道的程序猿";
    }
}

2、将此服务打成一个jar包,命名为badao.jar,并将次jar包上传到CentOS服务器上

在根目录下新建目录

cd /
mkdir dockerfiledemo

然后将上面的badao.jar上传到该目录下,在此目录下新建Dockerfile文件

vi Dockerfile

然后将此文件的内容修改为:

FROM openjdk:8-jdk-alpine
MAINTAINER "badaodechengxvyuan"
LABEL description="公众号-霸道的程序猿"
WORKDIR app
ADD badao.jar /app/badao.jar
EXPOSE 9090
CMD java -jar /app/badao.jar

3、Dockerfile命令说明

FROM:指定基础镜像,必须为第一个命令

MAINTAINER: 维护者信息

LABEL:用于为镜像添加元数据

ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源

WORKDIR:工作目录,类似于cd命令

RUN:构建镜像时执行的命令

CMD:构建容器后调用,也就是在容器启动时才进行调用。

ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。

ENV:设置环境变量

EXPOSE:指定于外界交互的端口

VOLUME:用于指定持久化目录

ARG:用于指定传递给构建运行时的变量

USER:指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

ONBUILD:用于设置镜像触发器

4、上面的Dockerfile文件的意思

以openjdk为基础镜像

设置工作目录为app目录

将当前本地目录下badao.jar添加到容器add目录下

暴露9090端口

cmd运行命令启动jar包。

5、编译Dockerfile文件生成Docker镜像

docker build -t badaoimage .

注意这里的镜像名 不能有大写,后面还有一个点

注意:

-t代表目标镜像名

.代表Dockerfile文件路径

如果需要删除旧的镜像

docker rmi 镜像名

构建成功后可以通过

docker images

看到自己构建的镜像

6、运行构建的badaoimage镜像

docker run -d -p 9090:9090 badaoimage

然后查看运行中的容器

docker ps

并且在浏览器中访问get接口成功。

并且查看容器运行的输出日志

docker logs -f 容器ID

猜你喜欢

转载自blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119818808
今日推荐