Dockerfile是什么?

dockerfile就是用来构建docker镜像的构建文件,命令参数脚本。

如何使用Dockerfile?

  • 1、编写一个Dockerfile文件
  • 2、docker build构建成

基础使用(此处罗列一些我们经常用到的)

# 指定依赖镜像版本,基于什么镜像,构建镜像,复制了这个镜像
FROM node:16-alpine
# 指定doker的环境变量,运行时一直生效,请注意,运行时
ENV NODE_ENV=${NODE_ENV}
# 构建参数,运行时无效,可以构建时候临时修改变量,请注意,构建时
ARG NODE_ENV=production
# 指定你的命令shell语句运行的目录,假如目前没有这个目录,它就会自动创建这个目录
WORKDIR /app
# 复制源文档到工作目录,将宿主机的文件拷贝到某路径下
COPY ./ /app # 也可以使用 ADD,但是COPY更好用,支持url
# 运行shell命令语句,构建时候执行
RUN yarn install
# 暴露镜像的指定端口,替换成应用实际的端口号
EXPOSE 8090
# 指定镜像启动运行的脚本,只有容器真正运行的时候才会运行的脚本,执行后容器的生命周期即结束,且一般为阻塞式语句,如tail语句
# tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止,会输出文件,追踪文件更新
# ENTRYPOINT如果不是json就会以ENTRYPOT为准,
# 如果ENTRYPOINT和CMD都是JSON,就用ENTRYPOINT+CMD拼接
CMD tail -f xxx.txt # 也可以使用ENTRYPOINT
CMD [ "node", "server.js" ] # 用法举例

附图ENTRYPOINT和CMD

下面介绍几个我没有怎么用过的

# VOLUME
# 指定映射文件,可实现挂载功能,可以将宿主机目录挂载到容器中,可用专用的文件存储当作Docker容器的数据存储部分
VOLUME ["/data"]
# LABEL
# 指定元数据,便于找到docker,一个Dockerfile种可以有多个LABEL
LABEL com.xiaojin.blog="xiaojin"
LABEL version="1.0"
LABEL description="I see myself as a boy playing on the \
seashore, find a smooth stone, I feel happy. " # USER
# 设置启动容器的用户,可以使用用户名或UID
USER daemo
USER UID # ONBUILD [INSTRUCTION]
# 这个命令只对当前镜像的子镜像生效。当前镜像构建的时候不会执行,基于当前镜像的镜像去构建的时候才会执行
# 比如当前镜像为A, ls -al 命令不会在A镜像构建或启动的时候执行,它会在子镜像构建的时候被执行
ONBUILD RUN ls -al # STOPSIGNAL
# 当容器停止时给系统发送什么样的指令,指定容器使用什么信号,一般指定信号名,
STOPSIGNAL signal # HEALTHCHECK
# 容器健康状况检查命令,有下面两种语法
HEALTHCHECK [OPTIONS] CMD command
HEALTHCHECK NONE

docker部署nodejs与测试

超简单图文并茂基于Linux使用Docker部署Node.js项目

大功告成~~

  • 今天就写到这里啦~小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~

学无止境,合作共赢

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

最新文章

  1. 【设计模式】单例模式 c++实现
  2. .NET随记【你懂的】
  3. ZeroMQ接口函数之 :zmq_inproc – ØMQ 本地进程内(线程间)传输方式
  4. 零散的JavaScript公用方法
  5. EF上下文管理
  6. String类的split方法以及StringTokenizer
  7. wind7下搭建ftp服务器
  8. Java发送HTTP POST请求(内容为xml格式)
  9. 二〇一五年五月二十二日--bug--启动页面出现模糊的问题
  10. 【转】CentOS安装PF_RING(虚拟机)
  11. JVM(五)垃圾回收器的前世今生
  12. history.go(-1)和History.back()的区别
  13. Go语言基础之变量和常量
  14. vue中子组件通过$parent操作父组件的参数或者方法
  15. Elasticsearch5.5.1插件开发指南
  16. Linux基础命令---修改用户密码
  17. go标准库DOC与 raft
  18. EF基础知识小记一
  19. JS查找孩子节点
  20. Android两次后退键退出

热门文章

  1. Gitea 1.18 功能前瞻(其三):增强文本预览效果、继续扩展软件包注册中心、增强工单实用功能、完善了用户邀请机制和SEO
  2. Sql Server 数据库分页存储过程书写
  3. Java线程未捕获异常处理 UncaughtExceptionHandler
  4. 前端面试HTML和CSS总结,这一篇就够了!
  5. Java开发环境安装与配置(干货详细教程)
  6. 黏包现象、struct模块和解决黏包问题的流程、UDP协议、并发编程理论、多道程序设计技术及进程理论 _
  7. Java网络编程:Socket 通信 2
  8. CSS伪类使用详解
  9. Promise基础知识
  10. 【Java SE进阶】Day04 Map、Debug