---
# System prepended metadata

title: Docker 執行 Maven with Dockerfile
tags: [Docker]

---

# Docker 執行 Maven with Dockerfile

###### tags: `Docker`

Docker 指令參考：
[[小抄] Docker 基本命令
](https://yingclin.github.io/2018/docker-basic.html)

[Docker 中刪除 Images 鏡像 及 Containers](https://www.opencli.com/linux/docker-delete-images-containers)

[Day5: 實作撰寫第一個 Dockerfile
](https://ithelp.ithome.com.tw/articles/10191016)
Docker Images：
[lwieske/java-8
](https://hub.docker.com/r/lwieske/java-8)

## 建立 Dockerfile

Dockerfile 的內容如下：
```
FROM lwieske/java-8:jdk-8u202-slim

WORKDIR /root

RUN wget http://ftp.mirror.tw/pub/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

RUN tar -zxvf apache-maven-3.5.4-bin.tar.gz

ENV PATH=$PATH:/root/apache-maven-3.5.4/bin/

```
以上的 Dockerfile 主要有用到的指令說明如下
FROM： 使用到的 Docker Image 名稱，今天使用 CentOS

WORKDIR： 切換當前工作目錄，影響到後續的 RUN、CMD、ENTRYPOINT、COPY和ADD指令中的路徑。

RUN： RUN 指令後面放 Linux 指令，用來執行安裝和設定這個 Image 需要的東西

ENV： 用來設定環境變數

## Build Docker Image
1. 預設在和 Dockerfile 檔案同層的資料夾底下輸入， docker build 指令，如下：

```
docker build -t java8-maven . --no-cache
```

使用 --no-cache 的主要原因，是避免在 Build Docker image 時被 cache 住，而造成沒有 build 到修改過的 Dockerfile。

2. Build 完 Docker Image 之後，使用 docker images 指令查看是否有 build 成功如下圖：
![](https://i.imgur.com/ZqFl9vN.png)

3. 執行 Build 完的 Docker Image ，指令如下：
```
docker run -it -d --name java8-maven java8-maven
```
4. 進入執行中的 Container ，指令如下：

```
docker attach java8-maven
```

## 建立maven專案
參考資料：
[（二）maven 新手教學: 使用command指令，建立第一個maven專案
](https://dotblogs.com.tw/zjh/2018/09/25/maven_2)

輸入指令：`mvn archetype:generate`

![](https://i.imgur.com/xDl7Jp1.png)

第一個選項：直接輸入Enter，

第二個選項：這裡是選擇版本號，其中alpha代表內部測試，可以隨便選一個。
![](https://i.imgur.com/wCiHy1L.png)

接下來要分別輸入四個參數：

> groupId：idv.zjh。

> artifactId：MavenDemo。

> version ：直接輸入Enter

> package ：直接輸入 Enter
![](https://i.imgur.com/0blEXzi.png)

都OK之後，輸入 Y ，出現以下畫面代表Maven專案建制成功

![](https://i.imgur.com/UIVgQ4X.png)

## 使用Maven建立Jar包

> 步驟1：先進入有pom.xml設定的資料夾，輸入 mvn test，進行單元測試，確認沒有問題。

![](https://i.imgur.com/J729r8N.png)

出現Build Success，單元測試成功

> 步驟2：輸入 mvn package，產生jar包

![](https://i.imgur.com/meWH7Tq.png)

我們發覺產生了一個target資料夾，以及MavenDemo-1.0-SNAPSHOT.jar。下面是target目錄的內容

> 步驟3：進入target資料夾，輸入 `java -cp  MavenDemo-1.0-SNAPSHOT.jar idv.zjh.App`

![](https://i.imgur.com/8st2QLZ.png)
成功顯示Hello World 表示成功！