Dockerfile是以YAML格式撰寫的檔案,其內容是用一行一行指令組成,是用來描述映像檔如何生成的行為。
#
開頭代表註解# dockerfile
# Author: 阿榜
# Version: 1.0.0
FROM
是基底映像檔FROM golang:1.15.2-alpine3.12
FROM <image>
或FROM <image>:<tag>
WORKDIR
設定工作目錄WORKDIR /app
RUN
執行指定的指令# only for demo
RUN mkdir -p /home/demo/hello
RUN ["apt-get", "install", "curl"]
RUN apt-get update && apt-get install -y --force-yes nginx \
php5-fpm \
php5
RUN <command>
或RUN ["executable", "param1", "param2"]
\
符號來換行,比較容易閱讀。JSON array
的格式,格式內需使用雙引號
。&&
來串連多個命令。COPY
複製本地的檔案/目錄到映像檔的指定位置中COPY env.yaml config.yaml ./
COPY [–chown=<user>:<group>] <src>… <dest>
ADD
和COPY一樣,可將本地端的檔案/目錄加到映像檔的指定位置ADD env.yaml config.yaml ./
ADD [–chown=<user>:<group>] <src>… <dest>
EXPOSE
對外的連接埠EXPOSE 8080/tcp
EXPOSE <port> [<port>/<protocol>…]
ENV
設定環境變數ENV GO111MODULE=on
ENV <key> <value>
或ENV <key>=<value> …
CMD
映像檔啟動時,預設要執行的指令CMD ["Hello"]
CMD [“executable”,”param1″,”param2″]
或CMD [“param1″,”param2”]
或CMD command param1 param2
透過Dockerfile我們可以把應用程式需要的建置流程寫進去,運維人員不用再考慮如何架設機器環境一致性,可以大大降低在部署系統時的複雜度。