手把手教你写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) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 大家好!从今天开始,我要与大家一起打造一个属于我们自己的分布式爬虫平台,同时也会对涉及到的技术进行详细介绍.大 ...
随机推荐
- 二、Celery执行一步任务
二.Celery执行异步任务 2.1.基本使用 创建项目celerypro 创建异步任务执行文件celery_task: import celery import time backend='redi ...
- C#怎么在生成解决方案的过程中执行perl脚本(C#早期绑定)
转载 怎么在生成解决方案的过程中执行perl脚本 早期绑定在编译期间识别并检查方法.属性.函数,并在应用程序执行之前执行其他优化.在这个绑定中,编译器已经知道它是什么类型的对象以及它拥有的方法或属性. ...
- C++ undered_map哈希表用法——leetcode两数之和
undered_map 头文件:#include<undered_map> 创建表undered_map<key,value> Map_name; 插入元素 a[key]=va ...
- PHY驱动调试之 --- PHY控制器驱动(二)
1. 前言 内核版本:linux 4.9.225,以freescale为例. 2. 概述 PHY芯片为OSI的最底层-物理层(Physical Layer),通过MII/GMII/RMII/SGMII ...
- 微信公众号调试经常报access_token is invalid or not latest rid
是因为我没有使用中控服务器,所以服务器上使用同一个appid和secret获取了access_token 调试的时候再重新获取了一个新的access_token,所以导致微信服务器发放了新的acces ...
- Training: Stegano I
原题链接:http://www.wechall.net/challenge/training/stegano1/index.php 很明显,这是一道图像隐写题,因为他说的 我们右键图片,点击其他窗口打 ...
- 【Shell案例】【awk和循环、NR、格式打印、全局变量、$0、通配符】12、打印每一行出现的数字个数
写一个 bash脚本以统计一个文本文件 nowcoder.txt中每一行出现的1,2,3,4,5数字个数并且要计算一下整个文档中一共出现了几个1,2,3,4,5数字数字总数. 示例: 假设 nowco ...
- Django框架三板斧本质-jsonResponse对象-form表单上传文件request对象方法-FBV与CBV区别
目录 一:视图层 2.三板斧(HttpResponse对象) 4.HttpResponse() 5.render() 6.redirect() 7.也可以是一个完整的URL 二:三板斧本质 1.Dja ...
- 服务器迁移遇到的bug
目前有个客户做了个下单系统,系统运行了太多的扩展了,但是又没有文档,我就想着能不能把服务器打包成镜像,然后用新服务直接使用?? 事实是完全OK的.服务器用的阿里云. 但是遇到一个bug,我目前还没解决 ...
- 单例模式及pickle序列化模块
内容回顾 目录 内容回顾 单列模式实现的多种方式 pickle序列化模块 根据类名或对象名如何获取到类的字符串名 选课系统需求分析 功能提炼 选课系统架构设计 选课系统目录搭建 单列模式实现的多种方式 ...