【小试牛刀】基于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

【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第1张图片

2、拉取Docker hub镜像

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

【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第2张图片

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

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

3.1、启动镜像

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

image.png

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

【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第3张图片

4、准备一个JavaWeb项目

访问一个URL,页面返回一个HelloWorld。
http://localhost:8080/sayHello?param=1
创建过程和代码过程省略,主要是为了完成docker应用的部署。
【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第4张图片
【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第5张图片
配置文件:默认端口号8080
【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第6张图片

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

5.1、编写Dockerfile文件

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

# 基于jdk1.8的镜像构建一个新镜像
FROM docker.io/majiajue/jdk1.8

# 设置容器内的环境变量。格式:ENV = 或者另一种替代写法ENV  不使用=号
# 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

【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第7张图片

5.3、尝试启动新镜像

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

5.4、访问接口

curl http://localhost:8888/sayHello?param=1234
【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第9张图片
Docker控制台输出
【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第10张图片

如果这是一个正经的项目,到这项目也就部署完成了。可以提供IP或者域名对外访问了。
【小试牛刀】基于JDK1.8镜像构建Docker容器部署JavaWeb应用_第11张图片

参考

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

你可能感兴趣的:(#,Docker,docker,容器,JavaWeb)