码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 了解公司开发项目的容器化部署,会这一招就够


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

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

    接下来,就给大家讲下Dockerfile文件怎么编写与执行。

    Dockerfile编写注意事项

    Dockerfile文件,要与你构建镜像需要的所有文件,在同一个目录中
    
    Dockerfile文件除注释外,第一行必须是'FROM'开头
    
    Dockerfile文件中的关键字,一般用大写(虽然不严格区分大小写)
    
    Dockerfile文件中,每一行,都会构建一个层,所以,命令要尽可能合并行,不然,镜像因为层多而变的非常大
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Dockerfile关键字

    FROM 基础镜像

    如:FROM tomcat:jre8

    ENV 设置环境变量

    如:ENV JAVA_VERSION=jdk8u342-b07

    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”]

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

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

    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"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    构建镜像:

    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台机器,也行,自行选择。

    好了,看来这篇文章之后,是不是觉得公司开发人员写的项目,用容器来部署,简直是“不要那么爽!”

    现在我邀请你进入我们的软件测试学习交流群:【746506216】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

    喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!

    软件测试工程师自学教程:

    这才是2022最精细的自动化测试自学教程,我把它刷了无数遍才上岸字节跳动,做到涨薪20K【值得自学软件测试的人刷】

    接口性能测试 — 软件测试人必会618实战场景分析

    软件测试工程师月薪2W以上薪资必学技能 — Python接口自动化框架封装.

    美团面试真题_高级测试25K岗位面试 — 软件测试人都应该看看

    测试开发之全面剖析自动化测试平台 — 软件测试人的必经之路

    软件测试必会_Jmeter大厂实战 — 仅6步可实现接口自动化测试

    Jmeter实战讲解案例 — 软件测试人必会

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    leetcode143-Reorder List
    Rabbitmq入门与应用(四)-RabbitMQ常见模式
    Python 自动化测试框架unittest与pytest的区别
    【动画进阶】类 ChatGpt 多行文本打字效果
    软考系统架构之案例篇(架构设计相关概念)
    Tableau 10 中的顶级可视化技术
    www.testfire.nets渗透测试报告
    《Fundamantals of Software Architecture》 Q&A
    淘宝上货API:自动化上架商品批量获取商品详情信息
    【劳动者捍卫自己的权利】
  • 原文地址:https://blog.csdn.net/m0_67695717/article/details/126404801
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号