2021-05-12 14:32:11
在 Docker 中執行 SpringBoot 應用
2020-06-16 16:33:30
建立 SpringBoot 專案
用 Idea 建立一個 SpringBoot 專案,編寫一個介面:
package cloud.dockerdemo import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMethod import org.springframework.web.bind.annotation.RestController @RestController class HelloDocker { @RequestMapping(value = ["/"], method = [RequestMethod.GET]) fun hello(): String { return "<h1>Hello, Docker!</h1>" } }
這裡用的 Kotlin 語言,用 Java 的話,註解是一樣的。
下載 OpenJDK 映象
只用下載 jre 就行,只有 57MB。
docker pull openjdk:8u212-jre-alpine
在專案根目錄下建立 Dockerfile
FROM openjdk:8u212-jre-alpine WORKDIR /home/dev COPY ./target/*.jar /home/dev/app.jar CMD ["java", "-jar", "app.jar"]
- target 目錄就是 maven 打包輸出 jar 的目錄,把打包的 jar 檔案拷貝到容器中。
- CMD 就是容器啟動時執行的命令,即 java -jar app.jar 。
注意這裡執行 jar 沒有使用 & 符號,因為在 Docker 容器中執行的程式必須是前台的,如果用後台方式執行,命令執行完容器就直接停止了。
構建映象
在終端中把工作目錄切換到專案目錄,執行:
docker build -t <映象名稱> .
最後的 . 不能掉,它指定了上下文目錄為當前目錄。
執行容器
docker run --name <容器名稱> -d -p 8080:8080 <上一步構建的映象名稱>
執行後,可以使用 docker ps 命令檢視是否成功執行。
存取 localhost:8080 存取介面:
相關文章