Express Docker 镜像
以无根用户(rootless)和无发行版(distroless)方式运行Express应用程序,提供默认Express类,具备安全、轻量、自动更新及漏洞扫描等特性。
EXPRESS
以无根用户和无发行版方式运行Express应用程序
概述 📖
此镜像能做什么? 该镜像以无发行版(distroless)和无根用户(rootless)方式运行Express应用程序,并在/Express.js提供默认Express类。
核心价值 💶
为何选择此镜像而非其他现有镜像? 原因如下:
- 以https://github.com/11notes/RTFM/blob/main/linux/container/image/rootless.md身份(1000:1000)运行
- 基于https://github.com/11notes/RTFM/blob/main/linux/container/image/distroless.md构建,无shell环境
- 通过CI/CD自动更新至最新版本
- 内置健康检查
- 以只读模式运行
- 发布前后自动扫描漏洞(CVEs)
- 通过安全且固定的CI/CD流程构建
- 镜像体积极小
若您重视安全性、简洁性及极致优化,此镜像可能适合您。
对比 🏁
以下是本镜像与其他常用或原始镜像的对比:
| 镜像 | 磁盘大小 | 默认用户/组 | https://github.com/11notes/RTFM/blob/main/linux/container/image/distroless.md | 支持的架构 |
|---|---|---|---|---|
| 11notes/express:5.1.0 | 30MB | 1000:1000 | ✅ | amd64, arm64, armv7 |
卷 📁
- /express/var - Express应用程序目录
示例 🧬
main.js /express/var/main.js
jsconst Express = require('/Express'); const app = new Express(); app.express.get('/', (req, res, next) => { res.status(200).json({hello:"world!"}); }); app.start();
Docker Compose 配置 ✂️
yamlname: "express" services: express: image: "11notes/express:5.1.0" environment: TZ: "Europe/Zurich" ports: - "3000:3000/tcp" restart: "always"
如需修改容器默认UID/GID,请参考https://github.com/11notes/RTFM/blob/main/linux/container/image/11notes/how-to.changeUIDGID.md#change-uidgid-the-correct-way(我的https://github.com/11notes/RTFM)。
默认设置 🗃️
| 参数 | 值 | 描述 |
|---|---|---|
user | docker | 用户名 |
uid | 1000 | 用户ID |
gid | 1000 | 组ID |
home | /express | docker用户的主目录 |
环境变量 📝
| 参数 | 说明 | 默认值 |
|---|---|---|
TZ | 时区 | |
DEBUG | 启用容器镜像及应用调试模式(若支持) | |
EXPRESS_PORT | Express服务端口 | 3000 |
EXPRESS_MAX_BODY_SIZE | /Express.js允许的最大请求体大小 | 16MB |
主要标签 🏷️
以下是镜像的主要标签,同时提供每个提交及其sha256短哈希值对应的标签。
- https://hub.docker.com/r/11notes/express/tags?name=5.1.0
为何没有latest标签?如何获取更新?
我认为:latest标签存在风险。我曾多次对镜像引入破坏性变更,可能导致部分用户环境异常。若不想手动更新至最新https://semver.org/,可使用语义化版本的短标签:例如用```:5```或```:5.1```替代```:5.1.0```。这些标签会随新版本自动更新,效果类似```:latest```但固定在主版本或次版本级别。
若仍需获取最新版本,可使用:rolling标签,但请注意:此标签会即时获取最新版本,可能包含破坏性变更或安全问题,风险自负!
镜像仓库 ☁️
docker pull docker.xuanyuan.run/11notes/express:5.1.0 docker pull ***-ghcr.xuanyuan.run/11notes/express:5.1.0 docker pull ***-quay.xuanyuan.run/11notes/express:5.1.0
源码 💾
- https://github.com/11notes/docker-EXPRESS
基础镜像 🏛️
此镜像不基于其他镜像,以https://hub.docker.com/_/scratch为空起始层,包含以下无发行版层:
- https://github.com/11notes/docker-distroless/blob/master/arch.dockerfile - 包含用户、时区及根CA证书,无其他内容
- https://github.com/11notes/docker-distroless/blob/master/localhealth.dockerfile - 仅在127.0.0.1执行HTTP请求的应用
- https://github.com/11notes/docker-distroless/blob/master/node.dockerfile - JavaScript应用运行时
构建工具 🧰
- https://www.npmjs.com/package/express
通用提示 📌
- 使用反向代理(如Traefik、Nginx、HAproxy)终止TLS并保护端点
- 使用Let’s Encrypt DNS-01挑战获取有效的SSL证书
ElevenNotes™️
此镜像仅供参考,使用风险自负。更新镜像版本前请务必备份数据。查看https://github.com/11notes/docker-express/releases了解破坏性变更。使用中遇到问题请提交https://github.com/11notes/docker-express/issues,如有疑问或建议请创建https://github.com/11notes/docker-express/discussions而非issue。我的其他仓库可在https://github.com/11notes?tab=repositories查看。
创建于 13.10.2025, 21:48:13 (CET)
11notes 命名空间的其他可用镜像:
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务