
使用Docker搭建Java开发环境
编写Hello World
哈,老规矩,新手必写-Hello World。
创建Hello.java文件,并写入如下代码。
import java.util.*;
public class Hello{
public static void main(String[] argss){
System.out.println("Hello World!");
System.out.println(new Date());
}
}
编写DockerFile
新增文件dockerfile,写入如下代码
#基于Java 9
FROM java:9
#设置工作目录
WORKDIR /app
#复制文件件到工作目录
COPY . /app
#设置Java环境变量
ENV PATH=$PATH:$JAAVA_HOME/bin
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
#编译
RUN ["/usr/lib/jvm/java-9-openjdk-amd64/bin/javac", "Hello.java"]
#运行
ENTRYPOINT ["/usr/lib/jvm/java-9-openjdk-amd64/bin/java", "Hello"]
构建镜像
使用docker build命令来构建Docker镜像
docker build --rm -f "/opt/docker/java/DockerFile" -t java-hello:latest .

这里一定要注意标注的这个点,这个点其实是镜像上下文路径,点代表当前路径。
当构建的时候,由用户指定构建镜像的上下文路径,而 docker build 会将这个路径下所有的文件都打包上传给 Docker 引擎,引擎内将这些内容展开后,就能获取到所有指定上下文中的文件了。
比如说 dockerfile 中的 COPY . /app,其实拷贝的并不是本机目录下当前路径的所有文件,而是 docker引擎中展开的构建上下文中的当前目录下的所有文件,所以如果拷贝的文件超出了构建上下文的范围,Docker引擎 是找不到那些文件的。就会出现下面的报错。

执行
镜像构建完成后,先查看下镜像情况。docker images

然后使用docker run命令即可执行该容器获得结果。docker run java-hello

至此,使用Docker搭建Java开发环境,并运行hello world应用成功。
文章转载自测试开发吃货,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




