markdown-it
demo
Delete
Submit
clear
permalink
Dockerfile.dev ```Dockerfile FROM ubuntu:latest RUN apt-get update && \ apt-get install -y openjdk-11-jdk ``` ```bash docker build -t my-image -f Dockerfile.dev . ``` docker-compose ```yml version: "3" services: app: build: context: . dockerfile: Dockerfile.dev ``` CMD 和 ENTRYPOINT 都是 Dockerfile 中用來指定容器啟動時要執行的命令的關鍵字,不同的是它們的作用和使用方式有所不同。 CMD 是指定在容器啟動時執行的默認命令。如果在運行容器時沒有指定要執行的命令,那麼就會執行 CMD 指定的默認命令。 Dockerfile 中可以使用多個 CMD 指令,但只有最後一個 CMD 會被執行。如果在運行容器時指定了要執行的命令,那麼 CMD 指令的默認命令會被覆蓋。 ENTRYPOINT 也是指定在容器啟動時要執行的命令,但與 CMD 不同的是,它指定的命令是容器的入口點,即在容器啟動時一定會被執行的命令。 Dockerfile 中可以使用多個 ENTRYPOINT 指令,但只有最後一個 ENTRYPOINT 會被執行。如果在運行容器時指定了要執行的命令,那麼該命令會作為參數傳遞給 ENTRYPOINT 指定的入口點命令來執行。 因此,如果一個容器只需要運行一個命令,且該命令可以通過在運行容器時指定參數來實現不同的功能,那麼就應該使用 CMD。如果一個容器需要在啟動時進行一些特定的初始化操作,並且一定需要執行一個特定的命令,那麼就應該使用 ENTRYPOINT。 --- 以下是一個簡單的 Spring Boot 應用程式的 Dockerfile 範例。這個範例使用 OpenJDK 作為基礎映像,並將 Spring Boot JAR 檔添加到容器中。 **Dockerfile:** ``` # 使用 OpenJDK 11 作為基礎映像 FROM openjdk:11-jre-slim # 設定工作目錄 WORKDIR /app # 將本地的 JAR 檔複製到容器中 COPY build/libs/demo-0.0.1-SNAPSHOT.jar app.jar # 開放應用程式運行的端口(Spring Boot 默認使用 8080) EXPOSE 8080 # 定義啟動應用程式的命令 CMD ["java", "-jar", "app.jar"] ``` 請注意以下事項: - `FROM openjdk:11-jre-slim` 使用 OpenJDK 11 作為基礎映像。 - `WORKDIR /app` 設定工作目錄為 `/app`。 - `COPY build/libs/demo-0.0.1-SNAPSHOT.jar app.jar` 將本地的 Spring Boot JAR 檔複製到容器的 `/app` 目錄中。 - `EXPOSE 8080` 開放容器內部的 8080 端口,這是 Spring Boot 默認的端口。 - `CMD ["java", "-jar", "app.jar"]` 定義容器啟動時要執行的命令,即運行 Spring Boot 應用程式。 在實際應用中,你應該根據你的專案結構和需求進行一些調整。確保將 `demo-0.0.1-SNAPSHOT.jar` 替換為你實際生成的 JAR 檔名稱。 要建立 Docker 映像,可以在 Dockerfile 所在的目錄中執行以下命令: ```bash docker build -t your-image-name . ``` 然後,你可以運行映像: ```bash docker run -p 8080:8080 your-image-name ``` 這將啟動包含你的 Spring Boot 應用程式的 Docker 容器。確保将 `your-image-name` 替換為你指定的映像名稱。
html
source
debug
Fork me on GitHub