---
# System prepended metadata

title: 如何用 Docker 運行 jar
tags: [Docker實作]

---

此文章目的在於紀錄如何用 Docker 運行 jar

步驟如下
1. 把程式打包成 jar
    專案右鍵選擇 Export -> Runnable JAR file
![jar](https://hackmd.io/_uploads/S1wDnRtsa.png)

2. 把 jar 檔放入 Ubuntu 環境
資料夾路徑輸入 `~\\wsl$`
![ub](https://hackmd.io/_uploads/HkXWTRtsT.png)

放入路徑為 ~\docker\demo

3. 新增 Dockerfile
    `vi Dockerfile`
    
    ``` Linux
    # 指定使用 OpenJDK 11
    FROM openjdk:11

    # 容器內新建資料夾
    RUN mkdir -p /opt/jar

    # 複製 jar 到容器內指定資料夾
    COPY demo.jar /opt/jar

    # 切換到該路徑
    WORKDIR /opt

    # 容器啟動時執行的命令
    CMD ["java", "-jar", "jar/demo.jar"]
    ```
4. build image
    當前路徑為 ~/docker/demo
    輸入指令 `docker build -t demojar .`
    
    4.1 `--tag, -t` 用來設定 image 的名字及標籤，格式為 name:tag，tag 可以設多個。
    
    4.2 `.` 為當前路徑
    
5. build contains
    輸入指令 `docker run -it demojar`
    
    5.1 使用 -it 將 Docker 容器設定為交互模式，因為這次使用的 jar 有使用到 Scanner，會需要使用者輸入，如果沒有使用會出現發生錯誤
    `java.util.NoSuchElementException: No line found`
        
    
:::info

資料夾結構如下
```
└── docker
    └── demo
        ├── Dockerfile
        └── demo.jar
```

:::

參考
https://hub.docker.com/_/openjdk

https://github.com/Zhao2018Mr/docker_run_jar

Docker 部署運行 jar
https://www.cnblogs.com/aozhestudy/p/16642452.html

Day5: 實作撰寫第一個 Dockerfile
https://ithelp.ithome.com.tw/articles/10191016?sc=hot