docker-运行JavaWeb服务(jar包)
环境说明
linux系统版本:lsb_release -a
docker 版本: docker -v
不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。
查看docker中 mysql的版本,可以去官网,需要kx上网才能打开。
https://hub.docker.com/
最好是确认自己的服务器已经设置阿里云的镜像加速,或者使用腾讯的,网易的都是可以的。
自己选,设置之后下载镜像的速度回快很多。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry-vpc.cn-hangzhou.aliyuncs.com"]
}
EOF
查看自己的windows电脑上面安装的jdk版本,为JDK1.8,因此拉取的Java镜像服务也最好是JDK1.8的版本。
然后去官网查找对应的镜像资源。
建议最好选择官方的镜像,避免出现一些奇奇怪怪的问题。
由于JDK8现在开始收费,因此只能使用OpenJDK的镜像。
.1.拉取Java镜像.
docker pull java:openjdk-8
执行时报错
接着把名字更换为openjdk:8 ,镜像下载成功。
.2.运行java容器。
.a.先创建一个Java目录.
.b.在本地准备一个可运行的jar包,并且在本地可以正确访问。
.c.将jar包上传到服务器上,使用Java镜像启动服务。
启动服务,命令如下
docker run -d -p 8081:8081 -v /opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar \
--name exam openjdk:8 \
java -jar /project/WebBackend.jar
或者下面的命令
docker run -d -p 8081:8081 -v /opt/u01/exam/java:/project \
--name exam openjdk:8 \
java -jar /project/WebBackend.jar
参数说明:
docker run 表示运行docker 容器
-d 表示以后台模式运行
-p 8081:8081 表示将宿主机上的8081端口映射到java容器中的8081端口
-v /opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar 表示将宿主机上的jar包文件挂载到Java容器中
-v /opt/u01/exam/java:/project 表示将宿主机上的路径挂载到Java容器中
--name exam 表示给容器服务取一个名称
openjdk:8 表示镜像名,使用镜像ID同样可以
java -jar /project/WebBackend.jar 表示jar包的启动命令,注意路径是java容器中的路径。
建议:直接挂载路径比较好,因为运行JavaWeb服务时,还需要打印日志。
查看JDK版本
docker exec -it 容器名或者ID /bin/bash
.d.登录阿里云服务器打开8081端口。
控制台-->我的资源-->点击(实例)进入-->安全组-->安全组详情-->手动添加(入站规则) ,如下图所示
.3.访问测试。
访问成功。
补充:关于日志路径的配置。
自己使用的是logback打印日志,简单配置示例如下。
运行服务后,就会自动生成日志目录和日志,并且同样可以使用 taif -f 日志文件名 动态地查看日志
到此,使用docker 部署jar包并查看日志全部完成。
遇到的问题:docker 貌似不能单独部署一个java容器,需要运行具体的服务,比如执行一个Java文件,
启动一个JavaWeb服务等等。有知道的技术大佬欢迎指教!
参考博文
https://juejin.cn/post/7249647793898586172
https://blog.csdn.net/weixin_43471518/article/details/126541339
https://juejin.cn/post/6844904167920975886
https://hub.docker.com/_/java/tags?page=1&ordering=last_updated&name=openjdk-8