七、Docker实战
这里我使用之前的软件实践项目来进行Docker从构建到部署一整套实验。
Step1:Maven打包
进入项目目录,在Terminal运行Maven命令,通过Maven构建SpringBoot Web项目,将其打成Jar包。
mvn package -Dmaven.test.skip=true
image-20220616094117236
发现项目目录下生成了一个可执行Jar包,这里我们可以通过jar包来测试。
Step2:上传Jar包
将Jar包通过FTP工具上传到服务器~/healthySystem
目录下
Step3 :编写Dockerfile
~/healthySystem
目录下,使用vim Dockerfile
创建一个Dockerfile文件,然后在文件编辑如下内容:
#根据Java15为基础镜像
FROM openjdk:11.0.15-oraclelinux7
MAINTAINER tyf
#RUN yum install redis && yum install mysql
#将当前目录下jar包复制到Docker镜像中
#将需要额外加载的配置文件加入镜像
COPY *.jar /app.jar
COPY *.yml /application.yml
#暴露出的端口
EXPOSE 8079
ENTRYPOINT ["java", "-jar", "/app.jar" ~
修改完毕后,保存退出。
Step4:构建Docker镜像
在~/healthySystem
目录下执行:
docker build -t healthy:1.0 .
结果显示Successfully built ......
,构建Images成功
Step5: 测试镜像
docker run --name healthy --network host healthy:1.0 #执行新实例
image-20220617195045392
执行docker ps
查看容器状态
image-20220617195129284
打开服务器防火墙,访问http://81.68.239.206:8093/welcome.htm
,正常启动。
image-20220617195245538
Step5: 上传至阿里云仓库
这里使用我们上述使用的阿里云镜像仓库和中心仓库,在阿里云镜像仓库创建完成相应的远程仓库后,按照官方操作步骤来完成镜像推送。
-
登陆至阿里云 Docker Registry
docker login --username=谭永锋nb registry.cn-shanghai.aliyuncs.com
image-20220617201312628
-
更改镜像Tag
#docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[镜像版本号] docker tag 9e78dbdd6dd8 registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
image-20220617201707730
-
上传镜像
#docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[镜像版本号] docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
image-20220617201954652
-
登陆阿里云查看远程镜像仓库,显示上传成功。
image-20220617202025429
Step6:测试部署
网站部署步骤:https://github.com/TanYongF/healthyDay
基本流程:
- 安装Mysql、Redis
- 配置项目配置文件
- 执行下面命令
- 访问
http://ip:8093
docker run --name healthy --network host registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
八、实验总结
本次大作业通过学习Docker基本安装、数据管理、网络等基础知识,对Docker的诞生由来以及解决了多依赖项目部署复杂的问题,同时针对特定内容对Docker例如网络模式,其基于底层隔离和资源限制的基础——CGroup以及Namespace技术有了一定的理解。
同时又对之前的软件实习项目的部署引入Docker进行改造,通过编写Dockerfile以及Docker-compose文件构建出了项目对应的镜像并且上既然到了云端,从实践方面体会到了Docker对实际项目运维部署方面带来的巨大便捷。
由于自身的学习方向是Java后端方向,对于现在接触比较多的微服务、集群来讲,Docker等云原生工具大大降低配置部署难度,同时也让我对DevOps开发流程的理解逐渐加深,也促使我将将传统的开发思想逐渐转变成容器化思想。但是鉴于时间紧迫,对Docker底层原理的细节了解还不是很充分,同时对于业界比较流行的Kubernetes(k8s)等Docker容器编排工具还没有具体的体验学习,但是学无止境,未来我也会继续加深对其中云原生技术的深入学习,努力将自己打造成为新一代DevOps工程师。
参考资料
-
开源软件
+关注
关注
0文章
210浏览量
15900 -
编程
+关注
关注
88文章
3614浏览量
93686 -
Docker
+关注
关注
0文章
457浏览量
11846
发布评论请先 登录
相关推荐
评论