
madnificent/emberdocker-ember 是一套基于 Docker 的工具集,旨在提供可重现的 ember-cli 使用环境。它解决了跨机器开发时因操作系统差异导致的 nodejs/iojs 版本不一致、sass 绑定差异等问题,通过 Docker 容器化确保构建环境的一致性。结合 Docker 用户命名空间特性,卷挂载权限管理得以简化,同时提供封装脚本降低 Docker 命令的使用复杂度。
非交互式命令行工具,用于执行 npm/bower 依赖安装及其他非交互式 ember 命令。
示例:
bash# 安装 ember 依赖 ed ember install ember-cli-coffeescript # 安装所有 node 模块 ed npm install # 安装 bower 组件 ed bower install
用于启动 ember 开发服务器,支持端口配置与代理设置。
示例:
bash# 启动默认 ember 服务器 eds # 代理到本地服务(使用 host 代替 localhost) eds --proxy=[***] # 指定端口启动 eds --port=4000 --live-reload-port=64000
交互式命令行工具,支持需要用户输入的 ember 命令。
示例:
bash# 生成路由 edi ember generate route epic-win # 发布次要版本 edi ember release --minor
插件开发辅助工具,替代 npm link/npm unlink 实现容器内插件链接管理。
示例:
bash# 创建插件全局符号链接 cd your-ember-addon edl # 在项目中使用插件 cd your-ember-project edl your-ember-addon # 移除插件全局链接 cd your-ember-addon edl -u
注意:
edl依赖edi命令在 PATH 中可用。
ed 执行非交互式依赖安装(npm/bower/ember 依赖)。eds 启动 ember 服务器,支持端口自定义与 API 代理。edi 执行需要用户输入的命令(如代码生成、版本发布)。edl 管理本地开发插件的链接与解除,替代传统 npm 链接机制。前提:已正确配置 Docker。克隆仓库并将 bin 目录添加至 PATH:
bashgit clone [***] echo "export PATH=\$PATH:`pwd`/docker-ember/bin" >> ~/.bashrc source ~/.bashrc
建议使用 brew 安装脚本以解决 Docker for Mac 特定问题:
bash# 参考:[***]
通过 ~/.config/edi/settings 文件配置 Ember 版本,使用 VERSION 变量:
bashVERSION="3.15.1" # 设置 Ember 版本为 3.15.1
默认情况下,ed* 命令在容器中以 root 用户运行,可能导致新文件所有者为 root。可通过 Docker 用户命名空间配置解决:
添加用户映射:
bashecho "$(whoami):$(id -u):65536" | sudo tee -a /etc/subuid echo "$(whoami):$(id -g):65536" | sudo tee -a /etc/subgid
配置 Docker 守护进程(systemd 系统):
bashsystemctl edit docker.service
在配置文件中添加:
[Service] ExecStart= ExecStart=/usr/bin/dockerd --userns-remap="your-user-name" # 替换为实际用户名
详细说明参见 Docker 用户命名空间文档。
Shell 配置:Mac 默认终端使用登录 shell,需确保 ~/.bash_profile 加载 ~/.bashrc:
bashif [ -f ~/.bashrc ]; then source ~/.bashrc fi
SSH 代理支持:Docker for Mac 无法直接共享 ssh-agent 套接字,建议集成 docker-ssh-agent-forward,脚本已默认支持该方案。
以下功能在开发插件时可能存在兼容性问题,使用 edl 后可能需要重启相关服务或禁用:
通过设置 EDI_USE_EDI_DAEMON 为非空字符串启用常驻 Docker 守护进程,加速命令执行。
注意:使用
edl后需重启守护进程。
EDI_MOUNT_ONLY_USED_LINKED_MODULES:仅挂载使用的链接模块(可能影响 edl)。EDI_MOUNT_USED_NODE_MODULES_WITHOUT_SYMLINKS:直接挂载模块(需与上述变量同时设置,提升性能但不兼容 edl)。Mac 系统默认启用 docker-ssh-agent-forward。可通过 EDI_SSH_AGENT_CONTAINER 变量控制:设为空字符串禁用,Linux 系统设为非空字符串强制启用。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务