Dockerfile 的常用参数注解和范例
一、 docker hello world
- 1.1 Dockerfile
FROM centos:7.5.1804
MAINTAINER 11@qq.com
CMD echo "hello world"
- 1.2 注解
FROM centos:7.5.1804
# 指定源于一个基础镜像 centos:7.5.1804
# FROM <image>[:<tag>] [AS <name>]
MAINTAINER 11@qq.com
# 维护者/拥有者
# MAINTAINER <name>
CMD echo "hello world"
# 运行命令
# CMD <command> or CMD [<command>]
# 整个Dockerfile 中只能有一个,多个会被覆盖的
- 1.3 构建
// 在Dockerfile 所在的目录下
docker build -t hello .
二、Dockerfile 构建go程序镜像
- 1、Dockerfile
FROM golang:1.12 as build
ENV GOPROXY https://goproxy.cn
ENV GO111MODULE on
WORKDIR /go/cache
ADD go.mod .
ADD go.sum .
RUN go mod download
WORKDIR /go/release
ADD . .
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o app
FROM alpine as prod
ARG MODE="debug"
COPY --from=build /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=build /go/release /go/release/ /home/
WORKDIR /home
ENV MODE ${MODE}
CMD ["./app"]
- 2、注解
FROM golang:1.12 as build
# 指定源于一个基础镜像 golang:1.12 并起一个别名 build
# FROM <image>[:<tag>] [AS <name>]
ENV GOPROXY http://goproxy.cn
ENV GO111MODULE on
# ENV 在镜像内设置环境变量
# ENV <key> <value>
WORKDIR /go/cache
# 指定接下来的参数工作目录 你可以理解为 cd /go/cache ,目录不存在时会自动创建
# WORKDIR <dir>
ADD go.mod .
ADD go.sum .
# 这里的意思是 go.mod 和go.sum 添加到 镜像的工作目录下即/go/cache 下
# ADD [--chown=<user>:<group>] <src>... <dest>
RUN go mod download
# 运行 go mod download
# RUN <command>
COPY . .
# 将当前目录的所以文件及文件夹 copy 到 工作目录下
# copy <src> <desc>
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o app
# 编译go 程序
FROM alpine as prod
# 再指定一个基础镜像alpine 并起别名 prod
ARG MODE="debug"
# 通过docker构建镜像时, 外部传参, 默认参数debug
# --build-arg MODE=release 外部docker build 时添加这个参数,意思是设置MODE=release
# ARG <key>[=<value>]
COPY --from=build /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=build /go/release /go/release/ /home/
# 将来自build(go:1.12) 镜像下的 /usr/share/zoneinfo/Asia/Shanghai /etc/ssl/certs/ca-certificates.crt /go/release /go/release/
# 复制到 prod 镜像的 /etc/localtime /etc/ssl/certs/ca-certificates.crt home/
# COPY [--from=<image_alias>] <src>...<desc>
WORKDIR /home
# 指定工作目录 可以理解为 cd /home
ENV MODE ${MODE}
# 设置环境变量 ${MODE} 使用的是ARG 里面的MODE
CMD ["./app"]
# CMD 执行命令
- 1.3 构建
docker build --build-arg MODE=release -t app .
// --build-arg 外部传传参数, 多个参数就添加多个--build-arg
refer
Dockerfile 的常用参数注解和范例的更多相关文章
- Springmvc的handler method参数绑定常用的注解
转自:http://blog.longjiazuo.com/archives/1149 1. 简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分 ...
- Spring MVC常用的注解类
一.注解类配置 要使用springmvc的注解类,需要在springmvc.xml配置文件中用context:component-scan/扫描:  二.五大重要的注解类 1.RequestMapp ...
- 单元测试_JUnit常用单元测试注解介绍及代码演示
JUnit常用单元测试注解介绍及代码演示 by:授客 QQ:1033553122 1. 测试环境 1 2. 基础概念 1 3. 常用Annotation 1 4. 运行环境配置 3 maven配置 ...
- spring ,springmvc的常用标签注解
一:spring常用的注解: @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean.@Scope注解 作用域@Lazy ...
- 注解和注释以及Spring和SpringMVC常用的注解
1.两者区别 注解 :参与代码编译,以@开头的.它是给应用程序看的,单独使用注解毫无意义,一定要跟工具一起使用,这个所谓的工具实际就是能读懂注解的应用程序 注释 :对代码没有影响.对代码起到解释.说明 ...
- Spring中常用的注解,你知道几个呢?
今天给大家分享下Spring中一般常用的注解都有哪些.可能很多人做了很长是了但有些还是不知道一些注解,不过没有关系,你接着往下看. Spring部分 1.声明bean的注解 @Component 组件 ...
- Mybatis-学习笔记(8)常用的注解
1.常用的注解. 2.@insert.@delete.@update.@select完成常见的CRUD操作. import java.util.List; import org.apache.ibat ...
- SpringDataJPA在Entity中常用的注解浅析
首先我们常用的注解包括(@Entity.@Table.@Id.@IdClass.@GeneratedValue.@Basic.@Transient.@Column.@Temporal.@Enumera ...
- jackson学习之七:常用Field注解
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- adobe cc 系列产品更改默认安装路径方法
通过Adobe Creative Cloud 修改 1.在开始菜单中找到图下程序点开,并进行如下操作: 2.点击Apps位置 等待加载出软件,如图下所示. 点击右上角图标,会弹出以下窗口,点击首选项 ...
- Spring整合Quartz分布式定时任务
概述虽然单个Quartz实例能给予你很好的Job调度能力,但它不能满足典型的企业需求,如可伸缩性.高可靠性满足.假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一部 ...
- CentOS7 yum方式安装MySQL5.7 + 远程连接
1 下载并安装MySQL官方的 Yum Repository [root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-commu ...
- mfc HackerTools释放资源
作用: 在VC环境中除了我们所常用的Dialog.Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多. ...
- docker PXC MYSQL集群节点启动失败/节点顺序消失/只剩一个节点存在问题的解决
转载于:https://my.oschina.net/u/4884318/blog/4908669 大牛 佩服此人 截取本人遇到的问题: "error:0407008A:rsa routin ...
- Ansible基础使用
原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 Ansible命令用法 1.1 免密钥 1.2 Ad-Hoc基础命令 1.3 ...
- 第18章-x86指令集之常用指令
x86的指令集可分为以下4种: 通用指令 x87 FPU指令,浮点数运算的指令 SIMD指令,就是SSE指令 系统指令,写OS内核时使用的特殊指令 下面介绍一些通用的指令.指令由标识命令种类的助记符( ...
- java:volatile关键字原理
volatile说明 在变量中声明后,能够在所有线程中共享改变量.并且volatile关键字能防止指令重排,即程序读取到volatile时,则不会将程序执行顺序修改. 先了解下内存模型 cpu内存模型 ...
- python库--requests
requests 方法 返回 参数 方法详情 .get() r url get请求 params url?后面的内容会以'key=value'的方式接到url后面 proxies 设置代理ip ...
- sort-uniq-tr-cut命令 对文件处理相关操作
目录: 一.sort命令 二.uniq命令 三.tr命令 四.cut命令 五.eval命令 一.sort命令 以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序 语法格式 sort [选项] ...