脉冲云在线指定Dockerfile文件--如何编写Dockerfile文件
来源:互联网 发布:淘宝店铺首页模板 编辑:程序博客网 时间:2024/06/07 11:16
如何编写Dockerfile文件
[脉冲云](https://maichong.io)编译构建步骤中,在[编译镜像](http://maichong.io)时,需要指定Dockerfile文件,大家可以参考下面的内容,来写适合自己的Dockerfile文件。
首先我们先编写.dockerignore文件来忽略一下文件
编写.dockerignore文件
构建镜像时,Docker需要先准备context ,将所有需要的文件收集到进程中。默认的context包含Dockerfile目录中的所有文件,但是实际上,我们并不需要.git目录,node_modules目录等内容。 .dockerignore 的作用和语法类似于 .gitignore,可以忽略一些不需要的文件,这样可以有效加快镜像构建时间,同时减少Docker镜像的大小。示例如下:
.git/
node_modules/
runtime/
*.log
下面我们可以编写Dockerfile文件
2.FROM 指定基础镜像
基础镜像是必须指定的,使用 FROM 来指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。FROM maichong/node:7.6.0-wheezy
3.RUN 执行命令
RUN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。Dockerfile 中每一个指令都会建立一层。可以使用 && 将各个所需命令串联起来,使用一个Run 指令来只建立一层。RUN npm install --development \ && rm -R ~/.npm*
设置WORKDIR和 CMD
WORKDIR指令可以设置默认目录,也就是运行RUN / CMD / ENTRYPOINT指令的地方。
CMD指令可以设置容器创建是执行的默认命令。另外,你应该讲命令写在一个数组中,数组中每个元素为命令的每个单词(参考官方文档)。
FROM maichong/node:7.6.0-wheezy
MAINTAINER Zhao Lei zhao@maichong.it
COPY package.json /app/
WORKDIR /appRUN npm install –development \
&& rm -R ~/.npm*
COPY . /app
CMD node server.jsEXPOSE 5050
COPY与ADD优先使用前者
COPY指令非常简单,仅用于将文件拷贝到镜像中。ADD相对来讲复杂一些,可以用于下载远程文件以及解压压缩包(参考官方文档)。
合理调整COPY与RUN的顺序
我们应该把变化最少的部分放在Dockerfile的前面,这样可以充分利用镜像缓存。
示例中,源代码会经常变化,则每次构建镜像时都需要重新安装NPM模块,这显然不是我们希望看到的。因此我们可以先拷贝package.json,然后安装NPM模块,最后才拷贝其余的源代码。这样的话,即使源代码变化,也不需要重新安装NPM模块。
FROM maichong/node:7.6.0-wheezyMAINTAINER Zhao Lei <zhao@maichong.it>COPY package.json /app/WORKDIR /appRUN npm install --development \ && rm -R ~/.npm*COPY . /appCMD node server.jsEXPOSE 5050
7.EXPOSE 声明端口
EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P时,会自动随机映射 EXPOSE 的端口。EXPOSE 5050
8.ENV 设置环境变量
这个指令很简单,就是设置环境变量而已,无论是前面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。ENV NODE_VERSION 7.2.0
9.VOLUME 定义匿名卷
在 Dockerfile 中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。VOLUME /data
更多资料参考:
https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/
https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/
- 脉冲云在线指定Dockerfile文件--如何编写Dockerfile文件
- 脉冲云[编译构建]服务----使用Dockerfile文件,在线构建Dcoker镜像
- Dockerfile文件编写官方文档
- 3.docker学习笔记:编写Dockerfile文件
- 第2章 DockerFile文件编写
- windows中docker编写一个dockerfile文件
- Dockerfile文件指令
- Dockerfile 文件详解
- Dockerfile文件配置详解
- Dockerfile文件详解
- 如何编写最佳的Dockerfile
- Dockerfile编写
- 编写 DockerFile
- 编写Dockerfile
- Dockerfile文件那些事(一)
- 一个神奇的文件Dockerfile
- Dockerfile文件的书写规则
- dockerfile
- 摔跤吧 爸爸
- disruptor demo(三) 复杂一点的例子
- java数字每隔三位加逗号
- Mac
- MongoDB数据库的数据类型和$type操作符
- 脉冲云在线指定Dockerfile文件--如何编写Dockerfile文件
- LVS常见的问题及原因分析
- 计算所有1-100之间数字之和(偶数之和)代码
- Cocos2d-x游戏《雷电大战》html5版
- solr的部署到应用(一)
- QT入门_背景图片及背景色
- Java语言开发工具包JDK的安装与配置
- 奥威Power-BI电商运维BI解决方案-网站留存分析
- 百练_2684:求阶乘的和