Nic*_*cky 6 javascript continuous-integration node.js docker tutum
我一直在尝试缓存node_modulesDocker构建.我尝试了几种方法,包括这里的方法,但没有成功.
我缓存的主要原因是因为构建我的图像需要30多分钟,这太过分了.
我的Dockerfile:
# This image will be based on the oficial nodejs docker image
FROM node:4.2.1
RUN npm install -g jspm@0.17.0-beta.7 && \
npm install -g gulp && \
npm install -g tsd
# Use changes to package.json to force Docker not to use the cache
# when we change our application's nodejs dependencies:
ADD package.json /src/package.json
RUN cd /src && npm install
# Put all our code inside that directory that lives in the container
ADD . /src
# Set in what directory commands will run
WORKDIR /src
# Install dependencies
RUN cd /src && \
tsd reinstall -so && \
jspm install && \
gulp build -p
# Tell Docker we are going to use this port
EXPOSE 3000
# The command to run our app when the container is run
CMD ["npm", "run", "start-production"]
Run Code Online (Sandbox Code Playgroud)
我没有.dockerignore档案.我之前添加了一个,但它仍然没有缓存我的node_modules.
那么,如何缓存我的node_modules?随意建议修改Dockerfile.
谢谢!
我不确定它是否是错误的根源,但尝试在ADD命令中指定目标文件夹而不是目标文件。
ADD package.json /src
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用COPY而不是ADD(ADD可以与 url 和档案一起使用,但您在这里不需要它)。
您还可以在文件的前面指定您的工作目录。
尝试使用此代码:
# This image will be based on the official nodejs docker image
FROM node:4.2.1
RUN npm install -g jspm@0.17.0-beta.7 && \
npm install -g gulp && \
npm install -g tsd
# Set in what directory commands will run
WORKDIR /src
# Use changes to package.json to force Docker not to use the cache
# when we change our application’s nodejs dependencies:
COPY package.json ./
RUN npm install
# Put all our code inside that directory that lives in the container
COPY . ./
# Install dependencies
RUN tsd reinstall -so && \
jspm install && \
gulp build -p
# Tell Docker we are going to use this port
EXPOSE 3000
# The command to run our app when the container is run
CMD ["npm", "run", "start-production"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3874 次 |
| 最近记录: |