场景
使用Dockerfile定制镜像来部署Tomcat项目
在上面使用Tomcat部署项目之外,还可以使用Dockfile基于openjdk部署jar包项目。
注:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
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
标签:容器,badao,jar,CentOS7,镜像,docker,Dockerfile From: https://blog.51cto.com/BADAOLIUMANGQZ/6058740