【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用
文章目录
- 1、查看Docker hub中相关镜像
- 2、拉取Docker hub镜像
- 3、尝试把新镜像跑起来&与镜像产生交互
- 3.1、启动镜像
- 3.2、查看启动的容器内一些文件
- 4、准备一个JavaWeb项目
- 5、准备构建新的Docker镜像&运行镜像
- 5.1、编写Dockerfile文件
- 5.2、上传打成Jar包的Java应用&开始构建镜像
- 5.3、尝试启动新镜像
- 5.4、访问接口
- 参考
以案例了解Docker部署过程。
下面基于jdk1.8的docker镜像部署一个输出helloworld的JavaWeb应用镜像。
1、查看Docker hub中相关镜像
#搜索docker hub相关镜像
docker —help
#docker hub中搜索jdk相关镜像
docker search jdk
#或使用不截断相关描述输出
docker search —help
docker search jdk —no-trunc
2、拉取Docker hub镜像
docker —help
docker pull —help
#下载指定名名称的镜像,可能出现仓库找不到的情况,换一个镜像下载
docker pull docker.io/majiajue/jdk1.8
后面的部署应用的操作就基于(from)这个镜像,制作(build)新镜像了。
3、尝试把新镜像跑起来&与镜像产生交互
3.1、启动镜像
docker —help
docker run —help
#以交互的方式启动镜像
docker run -it 镜像ID或是镜像名[IMAGE ID]
3.2、查看启动的容器内一些文件
4、准备一个JavaWeb项目
访问一个URL,页面返回一个HelloWorld。
http://localhost:8080/sayHello?param=1
创建过程和代码过程省略,主要是为了完成docker应用的部署。
配置文件:默认端口号8080
5、准备构建新的Docker镜像&运行镜像
5.1、编写Dockerfile文件
需要仔细看一下Dockerfile文件,这是打包一个镜像的基础。
# 基于jdk1.8的镜像构建一个新镜像
FROM docker.io/majiajue/jdk1.8
# 设置容器内的环境变量。格式:ENV <key>=<value> 或者另一种替代写法ENV <key> <value>不使用=号
# https://zhuanlan.zhihu.com/p/346665702
ENV ENV LC_ALL zh_CN.UTF-8
# 运行一些指令
RUN mkdir -p /usr/local/app/
RUN touch /usr/local/app/hello.log
# 复制HelloWorld.jar到docker.io/majiajue/jdk1.8这个镜像的 /usr/local/app目录下
# https://cloud.tencent.com/developer/article/1896354
# 复制一些文件到新镜像中
COPY HelloWorld-1.0.jar /usr/local/app/
# ENTRYPOINT 是作为容器运行的命令存在的,但是他是非必须的,原因是除了可以在 Dockerfile 中填写 ENTRYPOINT,你还可以写 CMD,甚至同时使>用两者
# https://zhuanlan.zhihu.com/p/74520345
# docker run --entrypoint=java -jar xxx.jar
# 运行一段指令:后台运行的方式启动应用
# 因为基于的容器默认使用了/bin/sh脚本,下面这条语句不可用,写这篇文章时未解决
# ENTRYPOINT /bin/bash nohup java -jar /usr/local/app/HelloWorld-1.0.jar > /usr/local/app/hello.log > 2>&1 &
# CMD ["/bin/bash", "nohup java -jar /usr/local/app/HelloWorld-1.0.jar > /usr/local/app/hello.log > 2>&1 &"]
# 在启动镜像的时候直接运行
# 容器的编码方式不同可能会引起乱码:JAVA_OPTS="-Dfile.encoding=UTF8 。-Dsun.jnu.encoding=UTF8"-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
ENTRYPOINT java -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 -jar /usr/local/app/HelloWorld-1.0.jar
5.2、上传打成Jar包的Java应用&开始构建镜像
目录结构
#docker 构建命令
docker —help
docker build —help
docker build -f Dockerfile -t 镜像名:tagname .s
5.3、尝试启动新镜像
5.4、访问接口
curl http://localhost:8888/sayHello?param=1234
Docker控制台输出
如果这是一个正经的项目,到这项目也就部署完成了。可以提供IP或者域名对外访问了。
参考
https://zhuanlan.zhihu.com/p/346665702
https://cloud.tencent.com/developer/article/1896354
https://zhuanlan.zhihu.com/p/74520345
https://blog.csdn.net/zack_GZ/article/details/122910291
还没有评论,来说两句吧...