Dockerfile 优化工具 hadolint
本文介绍了Dockerfile优化工具hadolint,旨在帮助用户提升构建Docker镜像的效率、减少镜像体积并增强安全性。hadolint通过解析Dockerfile为抽象语法树(AST),根据内置规则检查每条指令与参数,特别利用Shellcheck来审查RUN指令中的Bash代码,并提出具体改进建议。文章详细说明了hadolint的三种使用方法:在线检查、二进制安装后本地运行以及通过Docker容器执行。此外,还列举了hadolint支持的各种命令行选项,包括配置文件路径设置、忽略特定规则等功能,以满足不同场景下的需求。通过遵循这些指南,开发者可以更有效地编写符合最佳实践标准的Dockerfile。
Supervisor 实现单容器运行多服务进程
本文介绍了如何使用Supervisor工具在单个容器中同时运行php-fpm和nginx服务,并通过cron服务管理计划任务。Supervisor是一个基于Python开发的进程管理工具,采用C/S架构,可以监控、控制Linux上的多个进程,确保其高可用性。它能自动重启异常退出的进程、记录日志、灵活配置以及集中管理多个进程。文章详细展示了以php官方镜像为基础构建Docker镜像的过程,包括安装Supervisor、nginx及cron服务,以及自定义Supervisor配置文件supervisord.conf的方法。最后,还列举了常用的supervisorctl命令,如查看状态、启动/停止/重启进程等,帮助用户更高效地管理和维护系统中的进程。
💻技术
未读
时间同步服务-Chrony
本文介绍了使用Chrony进行时间同步的配置方法。对于服务端,首先通过`yum install chrony -y`安装Chrony,然后编辑主配置文件`/etc/chrony.conf`以允许特定内网段(如172.16.1.0/24)的时间同步,并可通过修改外部服务器为国内时间源(如ntp.aliyun.com)和启用断网后继续同步来优化。服务启动与重载通过`systemctl start/reload chronyd`完成。客户端方面,既可以通过安装`ntpdate`命令手动或定时执行时间校准,也可以选择安装Chrony并指向服务端IP地址(例如172.16.1.62),之后重启服务并使用`chronyc sources`检查状态。
MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)
博主在推进公司MySQL适配ARM 64架构的过程中,发现Docker Hub官方仅提供MySQL 8.0以上版本的ARM 64镜像。为避免因版本变更带来的研发成本,博主决定自行构建MySQL 5.7.40版本的ARM 64镜像。整个过程包括:首先使用dfimage工具获取原始Dockerfile;由于官方yum源未提供对应版本的ARM 64 rpm文件,博主通过下载并编译源码生成rpm包;接着修改Dockerfile中的安装逻辑以适应新生成的rpm包;最后成功构建了所需的Docker镜像。此过程中还涉及对my.cnf配置文件及docker-entrypoint.sh脚本的调整,以确保兼容性和功能性。
RocketMQ 源码构建 Docker 镜像(基于 ARM 64 架构)
本文介绍了博主为RocketMQ 4.9.4版本构建ARM 64架构Docker镜像的全过程。首先,通过dfimage工具获取官方Dockerfile,并针对编译好的jar包在执行Topic初始化脚本时出现超时问题进行了源码修改与重新编译。接着,在ARM环境下安装maven等依赖,下载并编译RocketMQ源码生成新的jar包。最后,基于调整后的Dockerfile及自定义脚本成功构建了适用于ARM 64架构的RocketMQ Docker镜像。整个过程包括获取Dockerfile、编译源码以及构建镜像三个主要步骤,详细记录了每一步的操作命令和注意事项。