docker實例一
基于springboot2.0.0部署,沒有使用springboot的docker插件
@RestController
@RequestMapping("/docker")
public class DockerController {
@GetMapping("/test1")
public String test1() {
return "docker test1";
}
}
寫Dockerfile
FROM java:8
VOLUME /app
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/docker-test1.jar"]
構(gòu)建
docker build -t sosop/java-app1:v1.0.0 .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:34959eed5df6bfe74a17fbf459ed29505d51a48d5cb4a39f215b613c65b8023b
Status: Downloaded newer image for java:8
---> d23bdf5b1b1b
Step 2/4 : VOLUME /app
---> Running in ece3f8cca292
Removing intermediate container ece3f8cca292
---> 86c85d1c101e
Step 3/4 : EXPOSE 8080
---> Running in d2c5b86091b2
Removing intermediate container d2c5b86091b2
---> ccd096eab953
Step 4/4 : ENTRYPOINT ["java", "-jar", "/app/docker-test1.jar"]
---> Running in a0f619ef071e
Removing intermediate container a0f619ef071e
---> 7e6adf484301
Successfully built 7e6adf484301
Successfully tagged sosop/java-app1:v1.0.0
下面解釋下各條指令:
- FROM: 指定基礎(chǔ)鏡像,這里是需要java環(huán)境,所以依賴jdk8
- VOLUME: 定義匿名卷,VOLUME ["<路徑1>", "<路徑2>"…]或VOLUME <路徑>,為了防止運行時用戶忘記將動態(tài)文件所保存目錄掛載為卷,在 Dockerfile 中,我們可以事先指定某些目錄掛載為匿名卷
- EXPOSE:指令是聲明運行時容器提供服務(wù)端口,這只是一個聲明,在運行時并不會因為這個聲明應(yīng)用就會開啟這個端口的服務(wù)
- ENTRYPOINT:與CMD很相似,運行命令,但是可以讓鏡像變成像命令一樣使用,也可以做一些應(yīng)用運行前的準備工作
運行容器:
docker run -d -p 80:8080 -v /data:/app --name app1 sosop/java-app1:v1.0.0
?
? 直接訪問:http://localhost/docker/test1