手把手教你写Dockerfile以及测试
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项目
大功告成~~
- 今天就写到这里啦~小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~
手把手教你写Dockerfile以及测试的更多相关文章
- 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取
版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的 ...
- 手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染
版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
- 手把手教你写DI_3_小白徒手支持 `Singleton` 和 `Scoped` 生命周期
手把手教你写DI_3_小白徒手支持 Singleton 和 Scoped 生命周期 在上一节:手把手教你写DI_2_小白徒手撸构造函数注入 浑身绷带的小白同学:我们继续开展我们的工作,大家都知道 Si ...
- 手把手教你写DI_2_小白徒手撸构造函数注入
小白徒手撸构造函数注入 在上一节:手把手教你写DI_1_DI框架有什么? 我们已经知道我们要撸哪些东西了 那么我们开始动工吧,这里呢,我们找小白同学来表演下 小白同学 :我们先定义一下我们的广告招聘纸 ...
- 手把手教你写Sublime中的Snippet
手把手教你写Sublime中的Snippet Sublime Text号称最性感的编辑器, 并且越来越多人使用, 美观, 高效 关于如何使用Sublime text可以参考我的另一篇文章, 相信你会喜 ...
- 手把手教你写LKM rookit! 之 第一个lkm程序及模块隐藏(一)
唉,一开始在纠结起个什么名字,感觉名字常常的很装逼,于是起了个这<手把手教你写LKM rookit> 我觉得: 你们觉得:...... 开始之前,我们先来理解一句话:一切的操作都是系统调用 ...
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...
- [原创]手把手教你写网络爬虫(4):Scrapy入门
手把手教你写网络爬虫(4) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 上期我们理性的分析了为什么要学习Scrapy,理由只有一个,那就是免费,一分钱都不用花! 咦?怎么有人扔西红柿 ...
- [原创]手把手教你写网络爬虫(5):PhantomJS实战
手把手教你写网络爬虫(5) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 大家好!从今天开始,我要与大家一起打造一个属于我们自己的分布式爬虫平台,同时也会对涉及到的技术进行详细介绍.大 ...
随机推荐
- 如何用webgl(three.js)搭建一个3D库房,3D仓库,3D码头,3D集装箱可视化孪生系统——第十五课
序 又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去.有点江郎才尽,黔驴技穷的感觉. 写随笔,通常三步走,第一步,搭建框架,先把你要写的内容框 ...
- 实例解读丨关于GaussDB ETCD服务异常
摘要:本文通过对ETCD服务异常问题分析,代码展示解决方案. 本文分享自华为云社区<[实例状态]GaussDB ETCD服务异常>,作者:酷哥. 首先确认是否是虚拟机.网络故障 虚拟机故障 ...
- JS 学习笔记(二)Ajax的简单使用
使用Ajax访问本地TXT文件 ajax.js // 创建请求对象 var ajax = new XMLHttpRequest(); // 建立连接 ajax.open('get', 'test.tx ...
- prefetch和preload
前面的话 基于VUE的前端小站改造成SSR服务器端渲染后,HTML文档会自动使用preload和prefetch来预加载所需资源,本文将详细介绍preload和prefetch的使用 资源优先级 在介 ...
- 部署owncloud连接ladp迁移数据
定期 清理日志 echo '' > /var/www/html/data/owncloud.log 查询 用户 的 ldap 语句 (|(objectclass=inetOrgPerson)(o ...
- Stream流使用
Stream流的使用 转换为流的操作 map转换为stream流 Map map = new HashMap(); Set<Map.Entry<String,Integer>> ...
- PDF、视频格式缩略图获取(pdf2img)
PDF.视频格式缩略图获取(pdf2img) 获取pdf缩略图 导入依赖: <dependency> <groupId>org.apache.pdfbox</groupI ...
- 在C#中使用Halcon开发视觉检测程序
目录 简介 将 HALCON/.NET 添加到应用程序 添加控件 引用dll 调用Halcon算子 程序示例 HSmartWindowControl控件使用 加载.保存图像 扩展:加载相机图像 画线. ...
- 手动安装Mysql数据库,适合重装系统和绿色安装。
依次输入命令: d:cd D:\MySQL Server 5.6\bin 根据自己的目录设置 mysqld --install mysql4001 --defaults-file="D:\m ...
- 万字长文!对比分析了多款存储方案,KeeWiDB最终选择自己来
大数据时代,无人不知Google的"三驾马车"."三驾马车"指的是Google发布的三篇论文,介绍了Google在大规模数据存储与计算方向的工程实践,奠定了业界 ...