【发布时间】:2018-08-22 12:08:45
【问题描述】:
这是我的 dockerfile:
FROM node:6-onbuild
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app
ENV PORT 80
EXPOSE ${PORT}
CMD [ "npm","run", "start" ]
在 package.json 我确实有这个:
"scripts": {
"start": "node start.js",
"stagestart": "NODE_ENV=content-staging node start.js"
}
start 脚本用于生产,现在我想要一种在 dockerfile 中运行暂存脚本的方法。有没有办法在 dockerfile 中读取 NODE_ENV,所以我可以拥有一个 dockerfile 来处理暂存和生产。
【问题讨论】:
-
似乎有点像 Docker 的蚂蚁模式。如果您想运行不同的脚本或只是不同的环境变量,也不是很清楚,这两者都可以在创建 container 时执行。
-
@ldg 我实际上需要运行不同的脚本,但不知道应该如何分别运行它们。
-
创建两个 dockerfile
-
每个节点应用程序只能有一个 package.json 文件,因此如果您需要不同的应用程序启动,则需要从脚本启动应用程序。顺便说一句,如果不是您想要的,请检查我的详细答案。
-
您不应通过
npm运行命令。这会大大减慢处理速度。最好在生产时直接使用node start.js。
标签: node.js amazon-web-services docker dockerfile