
jorgenvatle/meteor-base本镜像为重写的geoffreybooth's meteor-base Docker镜像,旨在简化Meteor应用基础Docker镜像的构建和发布流程。作为Meteor应用的基础镜像,它支持通过多阶段Dockerfile构建,无需在构建机器上安装Node或Meteor,确保构建环境隔离可控,适合持续集成(CI)场景,实现可重复构建。
自动化构建:自动构建机制解决了新Meteor版本发布时,原镜像作者未及时更新对应Docker镜像的问题。
优化的entrypoint.sh:最终bundle中的默认entrypoint.sh不再无限期轮询等待MongoDB连接,而是在连接失败时以错误码退出。这解决了在Kubernetes等容器编排工具中,容器无法连接Mongo却被错误报告为健康的问题。
脚本重构:脚本经过重构,更清晰地指示其预期使用场景。
构建速度优化:示例用法经过重构,更好地利用Docker层缓存,在Meteor依赖未变更时显著加快重复构建速度。
适用于需要通过Docker构建和部署的Meteor应用,尤其适合:
持续集成(CI)环境:无需在CI服务器上安装Node或Meteor,构建过程完全在Docker内部完成,确保环境一致性。
容器编排场景:如Kubernetes等环境,改进的entrypoint.sh确保连接Mongo失败时容器正确退出,避免健康状态误报。
追求构建效率与镜像精简:通过优化的Docker层缓存提升构建速度,基于Alpine Linux基础镜像减小最终镜像体积,降低安全扫描风险。
将example/Dockerfile复制到项目根目录。
编辑复制到项目的Dockerfile,修改第一行,使末尾的版本号与项目的Meteor版本匹配。项目的Meteor版本可在.meteor/release文件中找到。
例如,若项目使用Meteor 3.0.4:
DockerfileFROM jorgenvatle/meteor-base:3.0.4
版本号需对应Docker Hub上的可用标签。
如需更新FROM node行中的Node版本以匹配Meteor版本,可在应用目录中运行以下命令获取对应Node版本:
bashdocker run --rm jorgenvatle/meteor-base:$(cat ./.meteor/release | cut -c8-99) meteor node --version | cut -c2-99 | grep -o "[0-9\.]*"
将example/.dockerignore复制到项目根目录,并适当编辑,避免将不必要的文件复制到Docker构建上下文,以加速构建。
将example/docker-compose.yml复制到项目根目录。然后在项目根目录运行:
bashdocker-compose up
这将为应用构建镜像并启动,同时启动一个关联的MongoDB容器。访问http://localhost/即可查看运行的应用。
可根据需求编辑项目中的Dockerfile,例如添加Linux依赖。多阶段构建模式的优势在于本基础镜像保持精简,无需ONBUILD触发器或配置文件即可影响最终镜像,用户可通过自己的Dockerfile完全控制最终镜像。
如需在Meteor应用启动前运行命令,可在Dockerfile中将脚本保存为startup.sh并放入$SCRIPTS_FOLDER,entrypoint.sh会自动执行该脚本。
现有多个优秀的Meteor Docker镜像,但本镜像在以下方面具有独特优势:
对比jshimko/meteor-launchpad:后者基于debian:jessie,可能无法通过安全扫描,且体积大于Alpine;此外,其每次生产构建都需下载安装Meteor,而本镜像通过缓存Meteor提升构建效率。
对比meteor/galaxy-images和Treecom/meteor-alpine:这两者均需在主机上构建Meteor应用,再复制到Docker容器中;而本镜像支持在Docker内部完成构建,无需在CI服务器等构建环境中安装Node或Meteor,确保构建环境一致性。
本仓库通过GitHub Action监控Meteor安装脚本,当有新Meteor版本发布时,会自动创建新镜像。对于旧版本,可参考.github/workflows/build-legacy.yml。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务