一、 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 官方文档

Dockerfile 的常用参数注解和范例的更多相关文章

  1. Springmvc的handler method参数绑定常用的注解

    转自:http://blog.longjiazuo.com/archives/1149   1. 简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分 ...

  2. Spring MVC常用的注解类

    一.注解类配置 要使用springmvc的注解类,需要在springmvc.xml配置文件中用context:component-scan/扫描:  二.五大重要的注解类 1.RequestMapp ...

  3. 单元测试_JUnit常用单元测试注解介绍及代码演示

    JUnit常用单元测试注解介绍及代码演示   by:授客 QQ:1033553122 1. 测试环境 1 2. 基础概念 1 3. 常用Annotation 1 4. 运行环境配置 3 maven配置 ...

  4. spring ,springmvc的常用标签注解

    一:spring常用的注解: @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean.@Scope注解 作用域@Lazy ...

  5. 注解和注释以及Spring和SpringMVC常用的注解

    1.两者区别 注解 :参与代码编译,以@开头的.它是给应用程序看的,单独使用注解毫无意义,一定要跟工具一起使用,这个所谓的工具实际就是能读懂注解的应用程序 注释 :对代码没有影响.对代码起到解释.说明 ...

  6. Spring中常用的注解,你知道几个呢?

    今天给大家分享下Spring中一般常用的注解都有哪些.可能很多人做了很长是了但有些还是不知道一些注解,不过没有关系,你接着往下看. Spring部分 1.声明bean的注解 @Component 组件 ...

  7. Mybatis-学习笔记(8)常用的注解

    1.常用的注解. 2.@insert.@delete.@update.@select完成常见的CRUD操作. import java.util.List; import org.apache.ibat ...

  8. SpringDataJPA在Entity中常用的注解浅析

    首先我们常用的注解包括(@Entity.@Table.@Id.@IdClass.@GeneratedValue.@Basic.@Transient.@Column.@Temporal.@Enumera ...

  9. jackson学习之七:常用Field注解

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. Unity遮罩之Mask、RectMask2D与Sprite Mask适用场景分析

    遮罩,顾名思义是一种可以掩盖其它元素的控件.常用于修改其它元素的外观,或限制元素的形状.比如ScrollView或者圆头像效果都有用到遮罩功能.本系列文章希望通过阅读UGUI源码的方式,来探究遮罩的实 ...

  2. Jmeter 生成测试报告、Jenkins 配置

    1. Jmeter 生成测试报告  示例: jmeter -n -t test.jmx -l result.jtl -e -o ./report 成功执行并生成报告: 生成报告失败:注意报告存放目录或 ...

  3. spring-cloud-sleuth+zipkin追踪服务

    1, 父Maven pom 文件 <parent> <groupId>org.springframework.boot</groupId> <artifact ...

  4. Windows下NodeJS安装与npm环境变量配置

    node.js下载:https://nodejs.org/en/download/ 参考:https://www.jianshu.com/p/812de13f1276 1.安装过程基本直接" ...

  5. 2018.7.31-2018.8.2记:关于maven

    maven的使用,用得好,则省力省事,但是用不好则会造成一堆莫名其妙的错误,maven在使用的时候,jar包下载异常终止尤为需要注意,很容易就终止了,并且会出现一些下载出空jar包的情况,即:jar包 ...

  6. mzy,struts学习(二):struts.xml的配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...

  7. 在ES5中模拟类

    1.Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. var _this = Object.create(fn.prototype);这句代码的 ...

  8. 利用Python快速绘制海报级别地图

    1 简介 基于Python中诸如matplotlib等功能丰富.自由度极高的绘图库,我们可以完成各种极富艺术感的可视化作品,关于这一点我在系列文章在模仿中精进数据可视化中已经带大家学习过很多案例了. ...

  9. Mybatis笔记(3)

    一.多表查询 1.1 一对一查询 订单和用户(一个订单属于一个) Order实体类有user属性 配置resultMap(OrderMap) <select id="findAll&q ...

  10. 连接Redis服务

    1.命令 redis-cli -h host -p port -a password 2.参数 host:远程redis服务器host port:远程redis服务端口 password:远程redi ...