Docker - Docker 执行 Maven with Dockerfile

Docker - Docker 执行 Maven with Dockerfile

参考资料

Docker 指令参考:

Docker Images:lwieske/java-8

说明

这篇笔记基本上跟前一篇差不多,不过这篇是改成用 Dockerfile 再做一遍相同的操作,也顺便了解 Dockerfile 的使用方式,特此纪录,虽然後面没有机会再用到,但也算是个不错的经验。

建立 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。

  1. Build 完 Docker Image 之後,使用 docker images 指令查看是否有 build 成功如下图:

  2. 执行 Build 完的 Docker Image ,指令如下:

docker run -it -d --name java8-maven java8-maven
  1. 进入执行中的 Container ,指令如下:
docker attach java8-maven

建立maven专案

先切换到使用者主目录,指令:cd ~

输入指令:mvn archetype:generate

会载一堆东西w

看到第一个选项:直接输入Enter,

第二个选项:这里是选择版本号,其中alpha代表内部测试,可以随便选一个。

接下来要分别输入四个参数:

groupId:idv.zjh

artifactId:MavenDemo

version :直接输入Enter

package :直接输入 Enter

都OK之後,输入 Y ,出现以下画面代表 Maven 专案建立成功拉

使用Maven建立Jar包

步骤1:先进入有pom.xml设定的资料夹,输入 mvn test,进行单元测试,确认没有问题,指令如下:

cd ~
ls
cd MavenDemo/
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! 表示成功!


<<:  D2: [漫画]工程师太师了-第1.5话

>>:  电子书阅读器上的浏览器 [Day03] 站在巨人的肩膀上,找到对的起跑点

[Day6] - Django 起手式

在系列文章的一开始,我们花了些篇幅介绍一些结构面的轮廓,现在开始要带大家开始进行实作了! 环境需求 ...

企划实现(27)

使用spinner并侦测 第一步:在values创建你要放在spinner的资料 第二步:在xml的...

[第七只羊] 迷雾森林舞会前夕 建立使用者关联

天亮了 昨晚是平安夜 关於迷雾森林故事 秘密通道 Rocky 循着发光的脚印继续寻找爸爸妈妈的下落 ...

Flutter基础介绍与实作-Day9 Hello Flutter(3)

First Flutter App 看完上一篇大家对Flutter的架构应该都有初步的了解了。今天我...

[Day 11] Sass/SCSS 基本介绍

前言 学完css,进阶一点就来学习 CSS 预处理器吧! 让CSS 可以像一般程序语言一样,有变数、...