在Docker之Dockerfile实战(二)中详细了介绍了使用Dockerfile来部署基于Python语言开发的应用程序和服务,下面详细的演示使用Dockerfile来部署基于jar的应用程序,也就是Java的技术栈。
创建一个SpringBoot的项目后,编写一个简单的REST API的接口信息,然后使用maven进行打包成jar(这部分在这里就不详细的演示了)。下面具体显示Dockerfile的内容:
FROM java:8
MAINTAINER 无涯
VOLUME /tmp
#创建app的目录
RUN mkdir /app
#把java文件复制到app的目录下
COPY app-0.0.1-SNAPSHOT.jar /app
#切换目录到app
WORKDIR /app
EXPOSE 8080
#启动服务
CMD ["java","-jar","app-0.0.1-SNAPSHOT.jar"]
编写完Dockerfile的文件后,下来开始构建,构建的具体命令为:
docker build -t app -f Dockerfile .
执行如上的命令下,输出的信息具体为:
Sending build context to Docker daemon 20.05MB
Step 1/8 : FROM java:8
---> d23bdf5b1b1b
Step 2/8 : MAINTAINER 无涯
---> Running in 89fbeb5a6524
Removing intermediate container 89fbeb5a6524
---> 275a7eedec2e
Step 3/8 : VOLUME /tmp
---> Running in e24b88b4524d
Removing intermediate container e24b88b4524d
---> 988d1613b030
Step 4/8 : RUN mkdir /app
---> Running in cac439e23439
Removing intermediate container cac439e23439
---> b3bc97168486
Step 5/8 : COPY app-0.0.1-SNAPSHOT.jar /app
---> bd96007bbc39
Step 6/8 : WORKDIR /app
---> Running in 1dc06649d4d2
Removing intermediate container 1dc06649d4d2
---> abb51050148e
Step 7/8 : EXPOSE 8080
---> Running in 25cfc2ec7215
Removing intermediate container 25cfc2ec7215
---> a97cead9050c
Step 8/8 : CMD ["java","-jar","app-0.0.1-SNAPSHOT.jar"]
---> Running in b069aca15a71
Removing intermediate container b069aca15a71
---> fe8dd48b3ee7
Successfully built fe8dd48b3ee7
Successfully tagged app:latest
使用Docker所有的镜像信息,就会存在app的镜像,下来可以开始启动,启动的命令具体为:
docker run --rm -p 8080:8080 app
执行后,输出的信息具体为:
下来具体来演示容器,编写测试代码来进行验证,测试代码内容为:
import requests
def test_image_app():
r=requests.get(url="http://localhost:8080/index")
assert r.status_code==200
验证结果信息如下所示:
python3 -m pytest -v test_app.py
Test session starts (platform: darwin, Python 3.7.4, pytest 6.2.5, pytest-sugar 0.9.4)
test_app.py::test_image_app ✓ 100% ██████████
感谢您的阅读,后续会持续的更新。