一、 docker hello world

  • 1.1 Dockerfile
  1. FROM centos:7.5.1804
  2. MAINTAINER 11@qq.com
  3. CMD echo "hello world"
  • 1.2 注解
  1. FROM centos:7.5.1804
  2. # 指定源于一个基础镜像 centos:7.5.1804
  3. # FROM <image>[:<tag>] [AS <name>]
  4. MAINTAINER 11@qq.com
  5. # 维护者/拥有者
  6. # MAINTAINER <name>
  7. CMD echo "hello world"
  8. # 运行命令
  9. # CMD <command> or CMD [<command>]
  10. # 整个Dockerfile 中只能有一个,多个会被覆盖的
  • 1.3 构建
  1. // 在Dockerfile 所在的目录下
  2. docker build -t hello .

二、Dockerfile 构建go程序镜像

  • 1、Dockerfile
  1. FROM golang:1.12 as build
  2. ENV GOPROXY https://goproxy.cn
  3. ENV GO111MODULE on
  4. WORKDIR /go/cache
  5. ADD go.mod .
  6. ADD go.sum .
  7. RUN go mod download
  8. WORKDIR /go/release
  9. ADD . .
  10. RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o app
  11. FROM alpine as prod
  12. ARG MODE="debug"
  13. COPY --from=build /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  14. COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
  15. COPY --from=build /go/release /go/release/ /home/
  16. WORKDIR /home
  17. ENV MODE ${MODE}
  18. CMD ["./app"]
  • 2、注解
  1. FROM golang:1.12 as build
  2. # 指定源于一个基础镜像 golang:1.12 并起一个别名 build
  3. # FROM <image>[:<tag>] [AS <name>]
  4. ENV GOPROXY http://goproxy.cn
  5. ENV GO111MODULE on
  6. # ENV 在镜像内设置环境变量
  7. # ENV <key> <value>
  8. WORKDIR /go/cache
  9. # 指定接下来的参数工作目录 你可以理解为 cd /go/cache ,目录不存在时会自动创建
  10. # WORKDIR <dir>
  11. ADD go.mod .
  12. ADD go.sum .
  13. # 这里的意思是 go.mod 和go.sum 添加到 镜像的工作目录下即/go/cache 下
  14. # ADD [--chown=<user>:<group>] <src>... <dest>
  15. RUN go mod download
  16. # 运行 go mod download
  17. # RUN <command>
  18. COPY . .
  19. # 将当前目录的所以文件及文件夹 copy 到 工作目录下
  20. # copy <src> <desc>
  21. RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o app
  22. # 编译go 程序
  23. FROM alpine as prod
  24. # 再指定一个基础镜像alpine 并起别名 prod
  25. ARG MODE="debug"
  26. # 通过docker构建镜像时, 外部传参, 默认参数debug
  27. # --build-arg MODE=release 外部docker build 时添加这个参数,意思是设置MODE=release
  28. # ARG <key>[=<value>]
  29. COPY --from=build /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  30. COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
  31. COPY --from=build /go/release /go/release/ /home/
  32. # 将来自build(go:1.12) 镜像下的 /usr/share/zoneinfo/Asia/Shanghai /etc/ssl/certs/ca-certificates.crt /go/release /go/release/
  33. # 复制到 prod 镜像的 /etc/localtime /etc/ssl/certs/ca-certificates.crt home/
  34. # COPY [--from=<image_alias>] <src>...<desc>
  35. WORKDIR /home
  36. # 指定工作目录 可以理解为 cd /home
  37. ENV MODE ${MODE}
  38. # 设置环境变量 ${MODE} 使用的是ARG 里面的MODE
  39. CMD ["./app"]
  40. # CMD 执行命令
  • 1.3 构建
  1. docker build --build-arg MODE=release -t app .
  2. // --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. JS对象创建的几种方法

    最近一直在看JS高级程序设计这本书,有空来梳理一下几种创建对象的方式.话不多说,直接步入正题. 第一种:Object构造函数创建 var Person = new Object(); Person.n ...

  2. python某个module使用了相对引用,同时其__name__又是__main__导致的错误

    主要讲解 某个module中使用了相对引用,同时这个module的 __name__ 属性 又是 __main__ 会报错的问题 1.问题复现 文件结构很简单: |--------package | ...

  3. servlet中servletContext的五大作用(三)

    1.    获取web的上下文路径 2.    获取全局的参数 3.    作为域对象使用 4.    请求转发 5.    读取web项目的资源文件 package day10.about_serv ...

  4. IDEA 创建Maven Web工程

    一.Maven环境搭建 二.Maven常用命令 mvn clean 清除生成的target文件 mvn install 生成target文件 mvn clean install 相当于先删除targe ...

  5. Helm on K8S

    前言 容器的出现,标志着云原生的到来,Docker 基于 Linux 隔离.虚拟化等能力封装了应用:Kubernetes 的出现,建立了云原生时代的技术基础设施,它基于对容器的编排封装了集群:Kube ...

  6. java js转码

    public static String escape(String src) { int i; char j; StringBuffer tmp = new StringBuffer(); tmp. ...

  7. for in和for of的简单区别

    //for in可以遍历数组和对象,但是for of只能遍历数组,不可以遍历对象 var arr = [1,4,5,6,7,8]; var obj = { name:'za', age:19, say ...

  8. vscode Markdown Preview Enhanced 安装配置

    打开VSCode 打开Externsion,可通过Ctrl+Shift+X 选中 Markdown Preview Enhanced并install即可 配置Preview风格: Magage -&g ...

  9. centos7 ftp 拒绝连接

    2021-09-03 1. 问题描述 刚才在重新搭建 ftp 服务器时,发现 ftp 拒绝连接,想起来我还没启动 vsftpd 服务,尝试启动却无法启动 vsftpd 服务 2. 解决方法 使用命令 ...

  10. MVC模式职责分工及学习路上的一些感想

    在正文之前想先说说自己coding道路上的一点感想,不得不感慨一下时间过得很快,之前写过一篇关于JavaWeb_MVC模式的一篇博客,转眼之间时间已经过去了两个月,那时候还是一个刚刚接触JavaWeb ...