是什么东西?
是一个脚本。
是创建了一个新镜像的脚本。
是基于基础镜像创建一个新镜像的脚本。
干啥用的?
创建新的docker镜像。在公司内部环境,需要基于公司内部的node镜像,指定公司内部的sass源和npm源,在指定的生产环境中运行项目。
为啥要用?一定要用吗?
不用的话,无法在公司内部的测试机中运行项目。本地环境就不需要。
怎么用?
以下是某项目的的Dockfile文件示例(http://npm.xxx.com是公司内部源)
1 | FROM registry.xxx.com/env/node:6.10.1-nginx |
FROM
1 | FROM registry.xxx.com/env/node:6.10.1-nginx |
COPY
1 | COPY package.json /app/package.json |
- COPY 复制package.json到制定的文件中去/app/package.json
ADD
1 | ADD package.json /app/package.json |
- ADD 复制package.json到制定的文件中去/app/package.json
- 用法与COPY相同,但是可以复制url作为源到指定的文件中。比COPY强大。
WORKDIR
1 | WORKDIR /app |
- 切换目录到app,,相当于cd。
RUN
1 | RUN npm uninstall |
- 在当前镜像的基础上执行指定命令,并提交为新的镜像。
- 后续RUN的命令在上一个RUN之后的镜像作为基础。
ENV
1 | ENV SASS_BINARY_SITE http://npm.xxx.com/node-mirrors/node-sass/ |
- ENV key value 指定一个环境变量,为后续的RUN指令使用。
EXPOSE
1 | EXPOSE 8080 |
- 指定要暴露哪个接口
CMD
1 | CMD ["node", "server.js"] |
- 启动容器的时候执行。构建的时候不执行
- 一个容器只有一个CMD。如果有多个,只有最后一个生效。