【发布时间】:2017-04-04 12:19:41
【问题描述】:
我正在尝试构建一个 Docker 容器,该容器具有基于 Aurelia 的 javascript 项目所需的大部分工具。我有 Docker 社区版版本 17.03.1-ce-mac5 (16048) 和以下 Dockerfile:
FROM ubuntu:yakkety
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -q && apt-get install -qy \
apt-utils \
git \
chromium-browser \
xvfb \
nodejs \
npm
RUN ln -s /usr/bin/nodejs /usr/bin/node
RUN npm install -g aurelia-cli
WORKDIR /workdir
EXPOSE 9000
我运行命令docker build -t maldrake/aurelia:v1 . 来构建容器,然后是
docker run --rm -it -P -v `pwd`:/workdir maldrake/aurelia:v1 /bin/bash
shell 进入 docker 容器。
那时,当我运行au 时,我希望在不带参数的情况下看到 Aurelia CLI 工具的通常输出、可用命令及其功能的列表。相反,我得到以下输出:
root@11f3d17edfd5:/workdir# au
/usr/local/lib/node_modules/aurelia-cli/lib/resolve/index.js:1
(function (exports, require, module, __filename, __dirname) { let core = require('./lib/core');
^^^
SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/usr/local/lib/node_modules/aurelia-cli/bin/aurelia-cli.js:3:17)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
root@11f3d17edfd5:/workdir#
javascript错误本身很容易理解,如果我查看那个index.js文件,确实顶部没有'use strict'。我可以将它添加到那个单独的文件中,这使得 Aurelia CLI 运行,足以创建一个新项目,但是当我尝试使用其他 CLI 命令时,比如au test,我遇到了与其他文件相同的错误顶部没有use strict。我应该如何以不同的方式配置我的环境,以便 CLI 在安装时就可以工作?
Node和npm版本如下:
root@11f3d17edfd5:/workdir# node -v
v4.2.6
root@11f3d17edfd5:/workdir# npm -v
3.5.2
我通过 Stack Overflow 进行了搜索,更一般地说,通过 Google 进行了搜索,但没有找到对同一问题的描述。这很可能意味着我遗漏了一些非常明显的东西。
【问题讨论】:
-
阅读 docker 最佳实践...您可以在一个 RUN 中安装多个包
-
啊,是的,谢谢!可能很明显我对使用 Docker 比较陌生……我相应地编辑了 Dockerfile,并更新了上面的问题帖子。它不会改变我看到的结果,但它确实优化了容器的构建。
-
为什么不在 docker hub 搜索现有的 aurelia 图像?为什么你需要一个容器中的整个 chromium 浏览器?
标签: dockerfile aurelia