基于 Docker 构建 Java 编译环境
在团队协作或 CI/CD 流程中,统一编译环境至关重要。与其让每个开发者手动配置 JDK、Maven 和 SVN,不如直接封装成一个 Docker 镜像。这样既能保证版本一致,又能快速清理环境。
准备工作
我们需要两个核心安装包:
- JDK 8 (例如:jdk-8u51-linux-x64.gz)
- Maven 3.3.3 (例如:apache-maven-3.3.3-bin.tar.gz)
将这两个文件放在与 Dockerfile 相同的目录下。
编写 Dockerfile
下面是一个精简的配置示例。注意这里使用了 ADD 指令,它会自动解压 .tar.gz 和 .gz 文件,这比先解压再 COPY 更省事。
FROM ubuntu
RUN apt-get update && \
apt-get -y install subversion
ADD jdk-8u51-linux-x64.gz /usr/local/
ADD apache-maven-3.3.3-bin.tar.gz /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51
ENV M2_HOME=/usr/local/apache-maven-3.3.3
ENV PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
这里的关键点在于路径设置。ADD 解压后的目录名通常由压缩包内部决定,所以环境变量里的 JAVA_HOME 必须对应实际解压后的文件夹名称。另外,把工具加入 PATH 是为了后续能直接在命令行调用 java 和 mvn。
构建与运行
确保终端位于 Dockerfile 所在目录,执行以下命令构建镜像:
docker build -t java-dev-env .
构建成功后,可以用 docker images 确认镜像已生成。启动容器时建议开启交互模式,方便调试:
docker run -it --rm java-dev-env bash
进入容器后,验证一下环境是否就绪:
java -version
mvn -v
svn --version
如果都输出了版本号,说明一切正常。此时你可以挂载本地源码目录,或者在容器内直接用 SVN 拉取代码进行 Maven 打包。
小贴士
生产环境中,建议将源码作为挂载卷(Volume)传入容器,而不是直接把代码拷贝进镜像层,这样修改代码时无需重新构建镜像。

