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


以案例了解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文件,这是打包一个镜像的基础。

# 基于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应用&开始构建镜像

目录结构
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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白说(๑• . •๑)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值