- 准备好一个可执行的jar包:hello-service-1.0-SNAPSHOT-jar-with-dependencies.jar(一个spring boot web服务,端口8080)。
root@localhost /h/t/d/hello_service# ls
Dockerfile hello-service-1.0-SNAPSHOT-jar-with-dependencies.jar
这个jar是基于jdk17的,直接使用java -jar xxx.jar执行会报错。
image.png
- 在同目录下生成Dockerfile文件
# 依赖的父镜像,需要jdk17
FROM openjdk:17.0.2-oracle
# 复制当前目录文件到docker容器目录
COPY hello-service-1.0-SNAPSHOT-jar-with-dependencies.jar /hello/hello-service-1.0-SNAPSHOT-jar-with-dependencies.jar
# 暴露端口
EXPOSE 8080
# docker run时执行的命令
ENTRYPOINT ["java", "-jar", "/hello/hello-service-1.0-SNAPSHOT-jar-with-dependencies.jar"]
FROM 指定的镜像可以去dockerhub查询
-
image.pngdocker build --tag hello .
生成镜像
-
image.pngdocker run -p 8080:8080 hello &
后台运行docker容器,将容器的8080端口映射到服务器的8080端口
docker ps
查看运行中容器,可以发现已经启动成功。
-
浏览器访问,服务已启动
image.png
一直惧怕docker这些新技术新概念,动手尝试一下也不是很难。毕竟工具就是屏蔽复杂细节,提高生产效率。不容易使用的话是工具制作者的问题(或者专业程度深的工具)。
网友评论