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 官方文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM