創建 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
訪問接口: