使用Dockerfile創(chuàng)建自定義鏡像的詳細(xì)步驟
一、什么是 Dockerfile?
Dockerfile 是一個(gè)文本文件,定義了如何構(gòu)建 Docker 鏡像的指令腳本。每條指令都會(huì)創(chuàng)建鏡像的一層。
二、自定義鏡像的基本步驟
示例項(xiàng)目結(jié)構(gòu):
myapp/ ├── Dockerfile ├── app.py ├── requirements.txt
三、Dockerfile 示例(以 Python 項(xiàng)目為例)
# 1. 使用官方基礎(chǔ)鏡像 FROM python:3.11-slim # 2. 設(shè)置工作目錄 WORKDIR /app # 3. 拷貝代碼和依賴 COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # 4. 拷貝應(yīng)用代碼 COPY app.py ./ # 5. 設(shè)置環(huán)境變量(可選) ENV TZ=Asia/Shanghai # 6. 定義啟動(dòng)命令 CMD ["python", "app.py"]
四、構(gòu)建鏡像
在包含 Dockerfile
的目錄下執(zhí)行:
docker build -t my-python-app .
說(shuō)明:
-t
:指定鏡像名稱.
:當(dāng)前目錄為構(gòu)建上下文(包含 Dockerfile)
五、運(yùn)行自定義鏡像
docker run -d -p 5000:5000 my-python-app
容器運(yùn)行后可以訪問(wèn)服務(wù)(如 Flask):
http://localhost:5000
六、常用 Dockerfile 指令總結(jié)
指令 | 作用 |
---|---|
FROM | 指定基礎(chǔ)鏡像(必須第一行) |
WORKDIR | 設(shè)置容器內(nèi)工作目錄 |
COPY | 拷貝文件到容器 |
RUN | 執(zhí)行命令(如安裝依賴) |
ENV | 設(shè)置環(huán)境變量 |
EXPOSE | 聲明端口(不映射,僅用于說(shuō)明) |
CMD | 容器啟動(dòng)時(shí)默認(rèn)執(zhí)行命令 |
ENTRYPOINT | 設(shè)置主執(zhí)行命令(可與 CMD 結(jié)合) |
七、優(yōu)化建議(生產(chǎn)環(huán)境)
優(yōu)化項(xiàng) | 示例或說(shuō)明 |
---|---|
使用 .dockerignore | 避免將 .git, venv, node_modules 等傳入鏡像上下文 |
使用多階段構(gòu)建(如 Java 項(xiàng)目) | 構(gòu)建依賴在第一個(gè)階段,運(yùn)行用最小鏡像 |
固定基礎(chǔ)鏡像版本 | 避免使用 latest,例如:python:3.11.7 |
添加元信息 | 使用 LABEL 記錄鏡像作者、版本等 |
適當(dāng)清理緩存 | pip install --no-cache-dir 等防止鏡像過(guò)大 |
八、示例:Java Spring Boot 項(xiàng)目 Dockerfile
FROM eclipse-temurin:17-jdk-alpine WORKDIR /app COPY target/myapp.jar app.jar EXPOSE 8080 CMD ["java", "-jar", "app.jar"]
九、構(gòu)建并推送鏡像到鏡像倉(cāng)庫(kù)(如 Docker Hub)
docker build -t myname/myapp:v1.0 . docker login docker push myname/myapp:v1.0
十、總結(jié)一句話:
使用 Dockerfile 構(gòu)建鏡像是容器化的第一步,只需定義清晰的構(gòu)建步驟,即可快速打造可部署、可復(fù)用的鏡像,支持跨環(huán)境一致運(yùn)行。
以上就是使用Dockerfile創(chuàng)建自定義鏡像的詳細(xì)步驟的詳細(xì)內(nèi)容,更多關(guān)于Dockerfile創(chuàng)建自定義鏡像的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Shell腳本構(gòu)建Docker 半自動(dòng)化編譯打包發(fā)布應(yīng)用操作
這篇文章主要介紹了Shell腳本構(gòu)建Docker 半自動(dòng)化編譯打包發(fā)布應(yīng)用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03利用python自動(dòng)生成docker nginx反向代理配置
這篇文章主要介紹了利用python自動(dòng)生成docker nginx反向代理配置的相關(guān)資料,完成反向代理盡量簡(jiǎn)單,占內(nèi)存少等,需要的朋友可以參考下2017-01-01docker-compose up -d和docker-compose up -
本文主要介紹了docker-compose up -d和docker-compose up --build的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07mac通過(guò)docker一鍵部署Nexus3的過(guò)程記錄
編寫一些簡(jiǎn)易的 shell 腳本幫我們快速的搭建服務(wù)器,猿們只要按著套路“一步一步”的操作,基本上都可以快速部署服務(wù),這篇文章主要介紹了mac通過(guò)docker一鍵部署Nexus3及安裝步驟,需要的朋友可以參考下2022-10-10Docker執(zhí)行DockerFile構(gòu)建過(guò)程指令解析
這篇文章主要為大家介紹了Docker執(zhí)行DockerFile構(gòu)建過(guò)程及DockerFile的指令解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪<BR>2022-04-04基于Harbor構(gòu)建docker私有倉(cāng)庫(kù)的方法
這篇文章主要介紹了Harbor構(gòu)建docker私有倉(cāng)庫(kù)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12教你使用Docker?Compose一鍵部署前后端分離項(xiàng)目
Compose是一個(gè)定義和管理多容器的工具,使用Python語(yǔ)言編寫,下面這篇文章主要給大家介紹了關(guān)于如何使用Docker?Compose一鍵部署前后端分離項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-01-01