Dockerfile

wongchaofan發表於2024-07-05

Docker 透過讀取 Dockerfile 中的指令來構建映象。Dockerfile 是一個文字檔案,其中包含構建原始碼的指令。

以下是最常見的指令型別:

操作說明描述
FROM <image> 為您的影像定義一個基礎。
RUN <command> 在當前影像之上的新層中執行任何命令並提交結果。RUN還具有用於執行命令的 shell 形式。
WORKDIR <directory> 為Dockerfile 中其後的任何RUNCMDENTRYPOINTCOPY和指令設定工作目錄。ADD
COPY <src> <dest> <src>從路徑中的容器檔案系統複製新檔案或目錄並將其新增到其中<dest>src在主機,dest在容器
CMD <command> 允許您定義基於此映像啟動容器後執行的預設程式。每個 Dockerfile 只有一個CMD,當存在多個時,僅CMD考慮最後一個例項。

您可以使用命令的標誌<something>.Dockerfile指定 Dockerfile 檔名

以下 Dockerfile 建立一個容器映像,其中安裝了所有依賴項並自動啟動您的應用程式。

# syntax=docker/dockerfile:1
FROM ubuntu:22.04

# install app dependencies
RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip install flask==3.0.*

# install app
COPY hello.py /

# final configuration
ENV FLASK_APP=hello
EXPOSE 8000   #此映象暴露的埠號
CMD ["flask", "run", "--host", "0.0.0.0", "--port", "8000"] #CMD指令設定從映象執行容器時要執行的命令。

#CMD ["executable","param1","param2"](執行形式),"executable":可執行檔案,如果省略此引數,則取變數ENTRYPOINT的值。

exec 形式,這是首選形式:

ENTRYPOINT ["executable", "param1", "param2"]

殼體形式:

ENTRYPOINT command param1 param2

Building

 docker build -t test:latest .    #-t指示映象名稱和標籤   .表示 當前目錄
docker build -f- PATH # 標準輸入構建
 tar czf foo.tar.gz *
$ docker build - < foo.tar.gz   #tar包構建
$docker build --file test.Dockerfile - < foo.tar.gz #tar包構建,指定dockerfile檔名
$docker build https://github.com/user/myrepo.git #遠端構建
 docker run -p 127.0.0.1:8000:8000 test:latest

多階段構建

標籤相當於註釋,可以在構建檔案中以鍵值對的形式存在。

相關文章