首页 > 其他分享 >使用 Dockerfile 构建生产环境镜像

使用 Dockerfile 构建生产环境镜像

时间:2023-07-21 23:56:28浏览次数:44  
标签:www local etc 构建 usr && 镜像 php Dockerfile

传统部署的坑:

1202 年了,如果你连 Docker 都不知道是什么,我建议买一本书看看——或者谷歌一下,博客已经写烂了。

为什么有这篇文章,是因为我在真正做容器化改造的时候,发现公司生产环境存在大量的坑:

  • 传统虚拟机部署,基本依赖克隆或者手工编译。由于人力原因,SRE 历来单传,编译出来的 PHP、扩展等二进制版本不一致;
  • 项目开发人员痛苦不堪——他没办法模拟出接近于线上一致的环境(碰不到摸不着,各种扩展版本都要自己去编译);
  • 新人入职都会灵魂拷问你一句——我怎么把线上的代码跑起来?
  • ……

用什么 Linux 发行版?

Ubuntu 应该是全球用户量最多的发行版了,嗯我说的是桌面这一块,折腾过的人都知道,出问题的时候开机会有 “检测到系统错误” 的提示,另外,网上提供的配置或者各种疑难杂症,改了不一定能生效,而且你还不确定改了会不会影响到别的,反正我是不敢用的哈哈(Manjaro 真香)。

CentOS 应该是大家最熟悉的,也是我见过最多应用在生产环境中的。它给我的感觉就是非常稳定,并且网上的资料是一搜索就展现在你面前,而你对着资料改配置,重载就生效,不会搞出什么问题。

公司的生产环境清一色 CentOS 6,但 CentOS 6 已经被官方弃用,不再提供 yum 镜像源,这也意味着很多包你都安装不了,所以你只能升级到 CentOS 7。

问题来了,我能升级吗?

这不得不说到之前线上出现过一个故障:

公司有一台发布构建机器,用来做代码部署,机器上安装了 NodeJS、Go 编译器等,有一天前端的同事说向 SRE 同学提了一个需求:

升级 NodeJS 到 v10 版本,因为以前的 v6 版本太旧了,SRE 同学也没多想,发现 CentOS 6 机器要升级 glibc 才行,于是运维的同事就升级 glibc 之后,升级了 NodeJS;

过了段时间有人部署某服务,该服务使用了 结巴分词 ,部署完发现线上挂了……

嗯,线上环境的 glibc 版本比较低,编译机的 glibc 版本高,部署过去不兼容直接就是启动不了,还好当时回滚的够快

标签:www,local,etc,构建,usr,&&,镜像,php,Dockerfile
From: https://www.cnblogs.com/lofanmi/p/17572653.html

相关文章

  • 国内最财大气粗的镜像是哪个
    以前一直以为清华tuna镜像是他们学校自己搞得,虽然比较全但肯定没阿里腾讯云带宽高。今天看到alpine统计的镜像站数据:https://mirrors.alpinelinux.org/10Gbps带宽的中国镜像有:mirrors.tuna.tsinghua.edu.cnmirrors.nju.edu.cnmirrors.aliyun.comtuna的赞助商有华为,......
  • 【问题解决】docker版本v23.0后,构建Dockerfile中FROM私库镜像报错构建失败
    问题情况Docker版本在v23.0以后,只要Dockerfile中FROM的私库镜像不存在本地,就会报错:#我本地是v24.0.2版本Docker[root@localhostipd]#dockerbuild.-tharbor.xxx.com.cn/test/bap:2.7.1[+]Building0.6s(3/3)FINISHED......
  • 一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射
    笔者之前在自己的专栏《聊聊Linux内核》里通过大量的篇幅写了一个系列关于内存管理相关的文章,在这个系列文章中,笔者分别通过虚拟内存管理和物理内存管理两个角度算是把Linux内存管理子系统的全貌给大家呈现了出来。但之前的文章都是以专题的形式给大家呈现,采用一种静态的方......
  • 个人站点升级持续集成,自动构建和部署
    篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人站点升级持续集成,自动构建和部署相关的知识,希望对你有一定的参考价值。前言利用markdown+Hexo写文章,整体体验已经很棒。在写作过程中,节省了我不少时间。但是,美中不足的,就是发布的时候,需要手动输入命令,build好文件,......
  • IDEA与Maven在编译、构建、运行中涉及问题整理
    Maven构建后class、jar、war等文件输出目录Maven默认文件输出目录在根目录的target目录下,但是可以通过配置进行修改。${project.build.directory}:/target目录。${project.basedir}:pom.xml所在目录。class文件输出位置修改通过pom.xml增加如下配置<build><!--...-->......
  • 使用docker拉取arm架构的镜像
    使用Docker拉取ARM架构的镜像作为一名经验丰富的开发者,你需要教导一位刚入行的小白如何使用Docker来拉取ARM架构的镜像。下面将为你详细介绍整个操作流程,并提供每一步所需的代码和注释。操作流程下面是使用Docker拉取ARM架构的镜像的步骤:步骤操作代码示例步骤一安装......
  • 进入docker镜像
    进入Docker镜像Docker是一个开放源代码的容器化平台,它允许开发者将应用程序和相关依赖项打包为一个独立的容器,然后在任何环境中部署和运行。通过Docker,我们可以创建、管理和分发容器。在Docker中,镜像是容器的基础。镜像是一个轻量级、可执行的独立软件包,它包含了运行应用程......
  • 制作nginx docker镜像
    制作NGINXDocker镜像流程1.准备工作在开始制作NGINXDocker镜像之前,我们需要确保已经满足以下条件:安装Docker:在主机上安装好Docker,确保可以正常运行。准备NGINX配置文件:将NGINX的配置文件放置在一个目录中,后续会将其复制到Docker镜像中。2.创建DockerfileDockerfile是用......
  • 基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等
    基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等项目构成本项目由两个部分的组成,具体包括语料的获取以及基于语料的事件挖掘两个部分,具体项目目录包括:news_spider:基于scrapy的游记采集脚本event_graph:基于依存句法与顺承模式的顺承事件抽......
  • 【FTK Imager篇】FTK Imager制作内存镜像
    【FTKImager篇】FTKImager制作内存镜像FTKImager制作内存镜像---【蘇小沐】捕获内存镜像可以从菜单栏或工具栏点击内存捕获按钮制作内存镜像。(一)菜单栏:文件->捕获内存镜像(二)工具栏:捕获内存镜像图标填写镜像存储路径、镜像名;以及可选项:包括页信息、创建AD1文件。(三)内存......