【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用

红太狼 2023-10-10 16:40 0阅读 0赞

文章目录

      • 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

image.png

2、拉取Docker hub镜像

docker —help
docker pull —help
#下载指定名名称的镜像,可能出现仓库找不到的情况,换一个镜像下载
docker pull docker.io/majiajue/jdk1.8

image.png

后面的部署应用的操作就基于(from)这个镜像,制作(build)新镜像了。

3、尝试把新镜像跑起来&与镜像产生交互

3.1、启动镜像

docker —help
docker run —help
#以交互的方式启动镜像
docker run -it 镜像ID或是镜像名[IMAGE ID]

image.png

3.2、查看启动的容器内一些文件

image.png

4、准备一个JavaWeb项目

访问一个URL,页面返回一个HelloWorld。
http://localhost:8080/sayHello?param=1
创建过程和代码过程省略,主要是为了完成docker应用的部署。
image.png
image.png
配置文件:默认端口号8080
image.png

5、准备构建新的Docker镜像&运行镜像

5.1、编写Dockerfile文件

需要仔细看一下Dockerfile文件,这是打包一个镜像的基础。

  1. # 基于jdk1.8的镜像构建一个新镜像
  2. FROM docker.io/majiajue/jdk1.8
  3. # 设置容器内的环境变量。格式:ENV <key>=<value> 或者另一种替代写法ENV <key> <value>不使用=号
  4. # https://zhuanlan.zhihu.com/p/346665702
  5. ENV ENV LC_ALL zh_CN.UTF-8
  6. # 运行一些指令
  7. RUN mkdir -p /usr/local/app/
  8. RUN touch /usr/local/app/hello.log
  9. # 复制HelloWorld.jar到docker.io/majiajue/jdk1.8这个镜像的 /usr/local/app目录下
  10. # https://cloud.tencent.com/developer/article/1896354
  11. # 复制一些文件到新镜像中
  12. COPY HelloWorld-1.0.jar /usr/local/app/
  13. # ENTRYPOINT 是作为容器运行的命令存在的,但是他是非必须的,原因是除了可以在 Dockerfile 中填写 ENTRYPOINT,你还可以写 CMD,甚至同时使>用两者
  14. # https://zhuanlan.zhihu.com/p/74520345
  15. # docker run --entrypoint=java -jar xxx.jar
  16. # 运行一段指令:后台运行的方式启动应用
  17. # 因为基于的容器默认使用了/bin/sh脚本,下面这条语句不可用,写这篇文章时未解决
  18. # ENTRYPOINT /bin/bash nohup java -jar /usr/local/app/HelloWorld-1.0.jar > /usr/local/app/hello.log > 2>&1 &
  19. # CMD ["/bin/bash", "nohup java -jar /usr/local/app/HelloWorld-1.0.jar > /usr/local/app/hello.log > 2>&1 &"]
  20. # 在启动镜像的时候直接运行
  21. # 容器的编码方式不同可能会引起乱码:JAVA_OPTS="-Dfile.encoding=UTF8 。-Dsun.jnu.encoding=UTF8"-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
  22. ENTRYPOINT java -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 -jar /usr/local/app/HelloWorld-1.0.jar
5.2、上传打成Jar包的Java应用&开始构建镜像

目录结构
image.png

#docker 构建命令
docker —help
docker build —help
docker build -f Dockerfile -t 镜像名:tagname .s

image.png

5.3、尝试启动新镜像

image.png

5.4、访问接口

curl http://localhost:8888/sayHello?param=1234
image.png
Docker控制台输出
image.png

如果这是一个正经的项目,到这项目也就部署完成了。可以提供IP或者域名对外访问了。
image.png

参考

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

发表评论

表情:
评论列表 (有 0 条评论,0人围观)

还没有评论,来说两句吧...

相关阅读