网站首页 > 精选教程 正文
曾经写过一篇使用 Docker 、Traefik 以及 Nginx 创建自动索引站点的文章,本篇内容将聊聊如何进行优化。
包含内容:剥离容器配置中的变量、如何对容器进行健康检查、如何限制容器日志尺寸等。
剥离环境变量
前文的 docker-compose.yml 中,许多内容是直接写死在文件中的,随着配置文件越来越“复杂”、同类的服务启动越来越多,我们需要将一些基础的配置剥离出来,以方便后续的维护。
nginx:
image: nginx:1.15.7-alpine
labels:
- "traefik.frontend.rule=Host:demo.soulteary.com"
extra_hosts:
- "demo.soulteary.com:127.0.0.1"
比如“域名”、“镜像名称”等信息,我们可以从上面配置文件中进行剥离,剥离后的配置如下:
nginx:
image: ${NGX_IMAGE}
labels:
- "traefik.frontend.rule=Host:${NGX_DOMAIN}"
extra_hosts:
- "${NGX_DOMAIN}:127.0.0.1"
为了让 docker-compose.yml 能够像之前一样正常工作,我们需要创建一个 .env 文件,存放刚刚剥离的信息。
NGX_IMAGE=nginx:1.15.8-alpine
NGX_DOMAIN=demo.soulteary.com
后续这类信息多起来之后,可以通过配置系统接口获取,或者让CD系统自动生成。
支持 HTML 文件预览或直接下载
Nginx 默认配置中,HTML 类型文件将会被渲染成我们熟悉的网页,这显然不符合 auto index 的需求,如果能够像 TEXT 纯文本一样直接在浏览器中进行预览或许会更好。
修改 Nginx 使用的 mime.types 文件,将 HTML 类型文件进行修改,原始文件如:
text/html html htm shtml;
需要修改为:
text/plain html htm shtml;
如果你需要用户在访问页面时,能够直接下载文件,那么可以将 text/plain 修改为 application/octet-stream。
容器服务监控检查
为了容器中的应用运行结果更加可靠,我们需要让容器进行健康检查。
因为本例中的内容是动态生成的,虽然程序效率很高,但是还是建议让检查工具请求的内容尽可能更简单一些,为此我们定义一个新的路径 /health-check ,并将它添加到 nginx.conf 配置中:
location = /health-check {
access_log off;
default_type text/html;
return 200 'alive';
}
当健康检查器或者用户访问这个地址时,将会得到“alive”的结果。
接着,在 docker-compose.yml 中定义检查器:
healthcheck:
test: ["CMD-SHELL", "wget -q --spider --proxy off localhost/health-check || exit 1"]
当你执行 docker ps 时,终端输出的文本将会有一些不同。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9903d19aae7 nginx:1.15.8-alpine "nginx -g 'daemon of…" 5 seconds ago Up 4 seconds (health: starting) 80/tcp
当程序完全运行之后,Up 4 seconds (health: starting) 将会变更为 Up 10 seconds (healthy) 。
未来在调试/查看容器服务状况时,辨别服务运行状态就又有了一个新的依据啦。
约束日志文件尺寸
搭建在公网上的应用,除了会被用户访问之外,还可能遭到扫描器问候、恶意攻击的海量请求。
这时,如果不约束日志文件尺寸,很容易将磁盘占满,造成其他麻烦。
除了使用 logrotate 处理日志外,更简单的方案是在 docker-compose.yml 中对日志尺寸进行限制,将下面的内容添加到配置文件中。
logging:
driver: "json-file"
options:
max-size: "10m"
猜你喜欢
- 2024-10-20 你的Vue项目需要优化吗? vue优化方案
- 2024-10-20 CentOS 7.5上搭建Nginx、uWSGI、Django环境
- 2024-10-20 Linux软件包管理 Linux软件包管理的发展过程
- 2024-10-20 Nginx使用upstream实现动静分离,apache处理动态解析
- 2024-10-20 nginx的基础配置二 nginx简单配置
- 2024-10-20 部署模型的方法你了解多少?基于MVP的超简单部署方案拿走
- 2024-10-20 使用 Docker 和 Nginx NJS 实现 API 聚合服务(前篇)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)