一、關於DockerFile
在Docker中創建鏡像最常用的方式,就是使用Dockerfile。Dockerfile是一個Docker鏡像的描述文件,我們可以理解成火箭發射的A、B、C、D…的步驟。Dockerfile其內部包含了一條條的指令,每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。
二、Dockerfile的示例如下所示
FROM node:12
RUN rm -f /etc/localtime
&& ln -s /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
ENV PORT 12001
EXPOSE $PORT
WORKDIR /app
COPY package-lock.json package.json ./
RUN npm install
VOLUME /app/node_modules
COPY . ./
ENTRYPOINT ["/app/entrypoint"]
CMD [“npm”, “start”]
2.1 FORM
指明構建的新鏡像是來自於哪個基礎鏡像,例如:
FORM node:12 指定tag版本爲12的node基礎鏡像
2.2 RUN
構建鏡像時運行的Shell命令,例如:
配置時區
RUN rm -f /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
2.3 ENV
用於設置環境變量)
在鏡像中設置一個環境變量,例如:
ENV:PORT 12001
2.4 EXPOSE
指定容器需要映射到宿主機的端口,例如
EXPOSE: $PORT
2.5 WORKDIR
指定工作目錄,例如:
WORKDIR /app
2.6 COPY
複製文件到鏡像
COPY package-lock.json package.json ./
2.7 RUN
構建鏡像時運行的命令,例如:
RUN npm install
2.8 VOLUME
指定容器掛載點到宿主機自動生成的目錄,例如
VOLUME /app/node_modules
2.9 ENTRYPOINT
啓動容器時執行的Shell命令,同CMD類似,只是由ENTRYPOINT啓動的程序不會被docker run命令行指定的參數所覆蓋,僅有最後一個會生效。
ENTRYPOINT ["/app/entrypoint"]
2.9 CMD
啓動容器時執行的Shell命令
CMD ["npm", "start"]