从最简单的Dockerfile开始!Dockerfile计划第二期

简介: 从最简单的Dockerfile开始!Dockerfile计划第二期

dockerfile是什么?我们用dockerfile做什么?带着问题看内容嘛,因为我也是在学习

Sample Dockerfile

编写Dockerfile是将应用容器化的第一步,你可以这么认为,Dockerfile中的命令就好像是教你一步一步做菜的菜谱去告知docker如何构建我们的镜像。

# Use the official image as a parent image.
FROM node:current-slim
# Set the working directory.
WORKDIR /usr/src/app
# Copy the file from your host to your current location.
COPY package.json .
# Run the command inside your image filesystem.
RUN npm install
# Add metadata to the image to describe which port the container is listening on at runtime.
EXPOSE 8080
# Run the specified command within the container.
CMD [ "npm", "start" ]
# Copy the rest of your app's source code from your host to your image filesystem.
COPY . .

我们先从docker官网给的例子一步一步看吧

  1. 从FROM开始,后面的node:current-slim是一个由node.js供应商构建的官方镜像,并且经过docker验证通过,包含node.js长期维护的解释器和相关的依赖。
  2. 使用WORKDIR指定了后续所有的操作都会在镜像文件的文件系统目录/usr/src/app目录中执行(不是我们自己主机上的文件系统)。
  3. COPY会将package.json文件复制到镜像的当前目录中去(学过linux的同学都知道 . 是哪里)。这里额外说明一下,这个package.json文件会复制到我们的WORKDIR中也就是会在镜像里的这个位置/usr/src/app/package.json。再次提醒COPY是从复制主机文件到镜像的内部
  4. RUN指令就是在镜像中执行命令用的,即在镜像中执行npm install,它将会读取package.json确定依赖,并且安装。
  5. 最后一个COPY,会复制你的应用(服务)的剩余源代码从你的主机到你镜像的文件系统。这里我的理解就是(项目连锅端进镜像里,依赖在镜像里单独装)

到这里,这些步骤和在主机上设置环境,和安装应用的步骤机会是相同的,就是一步一步来。使用Dockerfile的好处就是,捕获了这些配置的动作,让我们的服务或者应用能够更好更方便的迁移。上面的步骤已经构建好了项目文件系统。但是Dockerfile中还有其他几行接着看吧

  • CMD指令指定了一些元数据,描述了如何基于该镜像运行容器(这里不看操作真的不懂),该镜像支持npm start的容器化过程。
  • EXPOSE 8080通知Docker该容器在运行时正在监听8080端口。

我们上面看到的例子就是一种很好的构建Dockerfile的方法。始终以FROM开头,然后按照步骤构建我们的私有文件系统,并且以添加元数据规范作为结束。Dockerfile指令还有很多,请参考

Dockerfile reference

下次更新如何部署Django项目

因为我自己刚工作,只能晚上回家自己慢


相关文章
|
6月前
|
缓存 Shell Go
dockerfile笔记
dockerfile笔记
70 0
|
运维 Java 应用服务中间件
Docker——Dockerfile的理解 & 案例实操
Docker——Dockerfile的理解 & 案例实操
Docker——Dockerfile的理解 & 案例实操
|
Java Shell Linux
41-Dockerfile-Dockerfile简介
41-Dockerfile-Dockerfile简介
|
Java 应用服务中间件 Docker
Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
124 0
|
Docker 容器
Dockerfile笔记
照着写就行
111 0
Dockerfile笔记
|
运维 Java Shell
Dockerfile学习
Dockerfile学习笔记
|
Java Linux 开发工具
Docker之Dockerfile实践
Docker之Dockerfile实践
Docker之Dockerfile实践
|
Java Linux Shell
Dockerfile 是什么 | 学习笔记
快速学习 Dockerfile 是什么
Dockerfile 是什么 | 学习笔记
|
Java 应用服务中间件 开发者
DockerFile 小总结 | 学习笔记
快速学习 DockerFile 小总结
DockerFile 小总结 | 学习笔记
|
开发者 Docker 容器
DockerFile 小总结|学习笔记
快速学习 DockerFile 小总结
DockerFile 小总结|学习笔记