使用openjdk docker镜像执行Java程序
背景
我们可以不必在宿主机上安装JDK或JRE,借助OpenJDK的Docker镜像,来运行一个可执行Java程序(SpringBoot Web应用)。
首先从DockerHub上拉取OpenJDK的镜像,因为我使用的技术栈还是Java 8,因此这里的镜像tag使用了8。
使用这个镜像有3个方案:
- 将Jar包挂载到openjdk:8的容器中一个目录中
- 将Jar包复制到一个Docker卷中, 然后挂载这个卷到容器
- 将Jar包构建到一个基于openjdk:8镜像的新镜像中
方案一
1 2 3 4 5
| # 切换到Jar包所在目录 cd /root/workspace
# 将这个可执行Jar包挂载到容器的根目录中 docker run --rm -it -v $("pwd")/easyshare-1.0.0.jar:/easyshare.jar -p 8080:8080 openjdk:8 java -jar easyshare.jar
|
方案二
1 2 3 4 5 6 7 8 9
| # 创建一个Docker Volume docker volume create java_app
# 将Jar包上传到Volume中 # Linux: docker volume inspect java_app # Windows: \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
# 启动镜像,挂载这个volume docker run --rm -it -v java_app:/mnt openjdk:8 /bin/bash
|
方案三
在Jar包的同级目录下,新建一个Dockerfile文件:
1 2 3 4 5 6 7
| FROM openjdk:8
MAINTAINER TONY
ADD easyshare-1.0.0.jar easyshare.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "easyshare.jar"]
|
1 2 3 4 5
| # 在Dockerfile的同级目录下执行如下命令 docker build -t easyshare:1.0.0 .
# 运行容器 docker run --rm -it -p 8080:8080 easyshare:1.0.0 /bin/bash
|
参考
CentOS安装OpenJDK 8:
1
| yum install java-1.8.0-openjdk
|
Windows 10环境Docker Volume的位置:
1
| \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
|