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

猜你喜欢

转载自blog.csdn.net/dongzi_yu/article/details/129570580