ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

了解公司开发项目的容器化部署

2022-09-05 18:34:59  阅读:189  来源: 互联网

标签:容器 部署 jar -- 开发 镜像 docker Dockerfile


一、背景(docker 容器部署):

  现在企业java项目,基本都是微服务架构开发的,而部署这种微服务,大概率都会选择容器化技术。此时,dockerfile文件编写能力,就变得非常重要了

  按照dokerfile规则编写的文件,可以使用 docker build命令生成自定义的容器镜像,然后,使用自己定义的镜像,创建满足自己要求的容器运行项目,就非常简单了。

 二、Dockerfile编写注意事项:

(1)Dockerfile文件,要与你构建镜像需要的所有文件,在同一个目录中

(2)Dockerfile文件除注释外,第一行必须是'FROM'开头

(3)Dockerfile文件中的关键字,一般用大写(虽然不严格区分大小写)

(4)Dockerfile文件中,每一行,都会构建一个层,所以,命令要尽可能合并行,不然,镜像因为层多而变的非常大

三、Dockerfile关键字:

(1)FROM 基础镜像

  如:FROM tomcat:jre8

(2)ENV 设置环境变量

  如:ENV JAVA_VERSION=jdk8u342-b07

(3)RUN 在buid镜像时执行的指令, 多个指令之间

  可以用封号来结束指令,也可以用中括号列表的方式,整合一个指令。

  如:RUM set -eux; groupadd --system --gid 999 mysql;useradd --system --uid 999 --gid 999 --home-dir /var/lib/mysql--no-create-home mysl

 如:RUN ["yum", "install", "-y", "nginx"]

(4)COPY 拷贝文件,从当前路径下,拷贝文件到镜像中

  如: COPY application.properties /usr/local/tomcat/webapps/app/

(5)WORKDIR 工作路径,也可理解为工作根路径,如果路径不存在,会自动创建

  如:WORKDIR /usr/local/tomcat

(6)EXPOSE 暴露端口

  如:EXPOSE 8080

(7)CMD 容器在启动时,执行的命令

  如:CMD /bin/bash

  如:CMD ["java","-jar", "xxx.jar"]

 eg:实际编写: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台机器,也行,自行选择。

 

标签:容器,部署,jar,--,开发,镜像,docker,Dockerfile
来源: https://www.cnblogs.com/xingzhifeng/p/16658942.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有