Dockerfile

 

 


Dockerfile 指令的一般格式為

INSTRUCTION arguments

INSTRUCTION 

FROM

FROM <image>
FROM <image>:<tag>

MAINTAINER

指定維護者訊息

MAINTAINER STRING

ENV

# 指定一個環境變數 (會被後續 RUN 指令使用)

ENV <key> <value>

RUN

# 每條 RUN 指令將在當前映像檔 "/" 上以 shell 執行 command

RUN <command>

# 用 exec 執行

RUN ["executable", "param1", "param2"]

EXPOSE

# 設定 Docker Container 對外的 Port ( "docker run -P ... " 時, Docker 會自動分配 port NAT 到 EXPOSE 的 port)

EXPOSE <port> [<port>...]

CMD

# 指定啟動容器時執行的命令. 每個 Dockerfile 只可以有一個 CMD (最後一條會被執行)

# 使用 exec 執行

CMD ["executable","param1","param2"]

ADD

# 複製指定的 <src> 到容器中的 <dest>
# src 可以是 Dockerfile 所在目錄的相對路徑
# 當 src 是 tar 檔時, 其複製後會自動解壓縮

ADD <src> <dest>

 


Example

 

FROM debian:jessie

MAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"

ENV NGINX_VERSION 1.11.5-1~jessie

RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
    && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \
    && apt-get update \
    && apt-get install --no-install-recommends --no-install-suggests -y \
                        ca-certificates \
                        nginx=${NGINX_VERSION} \
                        nginx-module-xslt \
                        nginx-module-geoip \
                        nginx-module-image-filter \
                        nginx-module-perl \
                        nginx-module-njs \
                        gettext-base \
    && rm -rf /var/lib/apt/lists/*

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]

-g directives  Set global configuration directives.