构建一个Java应用的Docker镜像
假设Java应用名为 docker-demo
1、在项目代码打成jar包:demo-docker.jar
# 这里我用mvn来打包
# -Dmaven.test.skip=true --- 跳过检查
mvn package -Dmaven.test.skip=true
2、创建Dockerfile文件
在jar包同一路径下创建文件,命名为:Dockerfile,内容是:
# FROM --- 获取基础镜像base image
# RUN --- 类似于执行 linux指令
# COPY --- 类似于linux copy指令
# EXPOSE --- 声名容器对外暴露的端口
# CMD --- 执行命令 java -jar /opt/app/demo-docker.jar
FROM adoptopenjdk/openjdk8:latest
RUN mkdir /opt/app
COPY demo-docker.jar /opt/app/
EXPOSE 80
CMD ["java", "-jar", "/opt/app/demo-docker.jar"]
3、构建镜像
# build --- 创建镜像的命令
# -t --- 指定target 名称
# docker-demo:0.0.1 --- 镜像名称:tag
# . --- 意为在当前目录下寻找 Dockerfile文件
docker build -t docker-demo:0.0.1 .
执行过程中,docker会先自动拉取Dockerfile中指定的基础镜像 adoptopenjdk/openjdk8:latest,然后依次执行Dockerfile命令最终完成镜像构建。
4、查看docker镜像
docker image ls
会看到两个镜像:一个是基础镜像 adoptopenjdk/openjdk8 ,一个是应用镜像 docker-demo。
[root@dev ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
fabric8/java-jboss-openjdk8-jdk latest 478a5e48e154 3 months ago 557MB
docker-demo 0.0.1 0c3c77626bf 1 hours ago 372MB
至此,应用镜像构建成功!!!