# 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 成功如下圖:  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`  第一個選項:直接輸入Enter, 第二個選項:這裡是選擇版本號,其中alpha代表內部測試,可以隨便選一個。  接下來要分別輸入四個參數: > groupId:idv.zjh。 > artifactId:MavenDemo。 > version :直接輸入Enter > package :直接輸入 Enter  都OK之後,輸入 Y ,出現以下畫面代表Maven專案建制成功  ## 使用Maven建立Jar包 > 步驟1:先進入有pom.xml設定的資料夾,輸入 mvn test,進行單元測試,確認沒有問題。  出現Build Success,單元測試成功 > 步驟2:輸入 mvn package,產生jar包  我們發覺產生了一個target資料夾,以及MavenDemo-1.0-SNAPSHOT.jar。下面是target目錄的內容 > 步驟3:進入target資料夾,輸入 `java -cp MavenDemo-1.0-SNAPSHOT.jar idv.zjh.App`  成功顯示Hello World 表示成功!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up