docker build
-t 參數的用途Day 11 認識了 Dockerfile,也知道它就像建立 Image 的「說明書」。
今天要正式使用 Dockerfile 建立自己的第一個 Image。
先準備一個簡單的 app.js:
console.log("Hello Docker!");
資料夾結構如下:
my-docker-app
│
├── Dockerfile
└── app.js
Dockerfile 則使用昨天的內容:
FROM node:20
WORKDIR /app
COPY . .
CMD ["node", "app.js"]
準備完成後,就可以開始建立 Image。
在 Dockerfile 所在的資料夾開啟終端機,輸入:
docker build -t my-app .
這行指令可以拆成:
docker build:建立 Image-t:替 Image 設定名稱或 Tagmy-app:Image 名稱.:使用目前資料夾作為 Build Context其中最後面的 . 很容易被忽略,但它代表 Docker 建置時會使用目前資料夾中的檔案。
建立完成後,可以輸入:
docker images
如果看到 my-app,就代表自己的 Image 已經成功建立。
有了 Image 之後,就可以像之前使用 hello-world 一樣建立 Container:
docker run my-app
執行後應該會看到:
Hello Docker!
整個流程就是:
Dockerfile
↓
docker build
↓
my-app Image
↓
docker run
↓
Container
↓
Hello Docker!
這次和之前最大的不同,就是使用的 Image 是自己透過 Dockerfile 建立的。
除了替 Image 命名,也可以自己設定版本:
docker build -t my-app:v1 .
其中:
my-app → Image 名稱
v1 → Tag
再使用:
docker images
就可以看到 Image 的名稱與 Tag。
透過不同 Tag,可以協助區分不同版本的 Image。
docker build 後忘記加 . → ✅ 最後加上 . 指定目前資料夾docker images 查看app.js
docker images 找到自己的 Imagedocker run my-app 建立 Containerv1 Tag今天終於使用昨天寫的 Dockerfile,實際建立了自己的第一個 Docker Image。
之前都是使用 Docker Hub 上已經準備好的 Image,今天自己從 Dockerfile 開始建立後,對 Dockerfile → Image → Container 的流程變得更清楚。
其中 docker build -t my-app . 最需要注意的是最後面的 .,一開始很容易忽略。成功建立 Image 並執行出 Hello Docker! 後,也更能理解 Dockerfile 的用途。
接下來就可以在這些基礎上繼續往 PostgreSQL 前進,把前面學到的 Docker 操作真正應用到資料庫環境中。