这一招:让你了解公司开发项目的容器化部署
Posted 程序员二黑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这一招:让你了解公司开发项目的容器化部署相关的知识,希望对你有一定的参考价值。
大家应该都知道,现在企业java项目,基本都是微服务架构开发的,而部署这种微服务,大概率都会选择容器化技术。此时,dockerfile文件编写能力,就变得非常重要了。
按照dokerfile规则编写的文件,可以使用 docker build命令生成自定义的容器镜像,然后,使用自己定义的镜像,创建满足自己要求的容器运行项目,就非常简单了。
接下来,就给大家讲下Dockerfile文件怎么编写与执行。
Dockerfile编写注意事项
-
Dockerfile文件,要与你构建镜像需要的所有文件,在同一个目录中
-
Dockerfile文件除注释外,第一行必须是’FROM’开头
-Dockerfile文件中的关键字,一般用大写(虽然不严格区分大小写)
- Dockerfile文件中,每一行,都会构建一个层,所以,命令要尽可能合并行,不然,镜像因为层多而变的非常大
Dockerfile关键字
-
FROM 基础镜像
- 如:FROM tomcat:jre8
-
ENV 设置环境变量
- 如:ENV JAVA_VERSION=jdk8u342-b07
-
RUN 在buid镜像时执行的指令, 多个指令之间
可以用封号来结束指令,也可以用中括号列表的方式,整合一个指令。 -
COPY 拷贝文件,从当前路径下,拷贝文件到镜像中
- 如: COPY
application.properties /usr/local/tomcat/webapps/app/
- 如: COPY
-
WORKDIR 工作路径,也可理解为工作根路径,如果路径不存在,会自动创建
- 如:WORKDIR /usr/local/tomcat
-
EXPOSE 暴露端口
- 如:EXPOSE 8080
-
CMD 容器在启动时,执行的命令
- 如:CMD /bin/bash
- 如:CMD [“java”,“-jar”, “xxx.jar”]
这写关键字是使用频率最高的几个,还有一些关键字,使用频率相对就要少些,可以自行学习。
- 实际编写:vim Dockerfile
# 基础镜像
FROM openjdk:8-jdk-alpine
# 拷贝当前路径下的项目包相关文件,到镜像中指定路径
COPY lemon.jar /opt/lemon.jar
COPY config/* /opt/config/
# 设定镜像创建出容器后的工作路径
WORKDIR /opt
# 设定镜像创建出容器后对外的服务端口,这个要根据你自己项目的服务端口设定
EXPOSE 8082
# 设定镜像在创建出容器时,运行的命令, 因为设定了workdir,所以,这个命令是在workdir的路径下执行
CMD ["java", "-jar", "lemon.jar"]
-
构建镜像:
docker build -f Dockerfile -t mylemon:1.0 .- 注意:-t 后面是自定义的镜像名与标签,这个参数不能少;最后一个点, 表示当前路径,也不能少。
- 第一次可能会有点慢,因为要先去下载 FROM后面的镜像到本地
- 执行完成后,可以使用 docker images 来查看当前系统的镜像列表,是否出现了自定义的镜像名
- 你还可以使用 docker history mylemon:1.0 这样用history来查看你的镜像内部层级结构
-
接下来当然就是用自己构建的镜像,创建容器咯:docker run -itd --name container-name -p 8082:8082 mylemon:1.0
这样,你们公司的项目jar包,就用容器化的技术部署了。至于你说,你们公司的服务器有n台,我是把上面的步骤在n台机器上都重复一遍,还是有其他什么‘投机’的方法,你觉得,重复一遍简单,就重复执行呗, 也可以把当前的镜像打包成为文件,然后,传递到其他n台机器,也行,自行选择。
好了,看来这篇文章之后,是不是觉得公司开发人员写的项目,用容器来部署,简直是“不要那么爽!”
最后也给大家分享一下我的一些学习资料:
以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。关注下方我的公众号免费领取!
以上是关于这一招:让你了解公司开发项目的容器化部署的主要内容,如果未能解决你的问题,请参考以下文章