
groboffshik/maven3-jdk-11-npm-sshpass本镜像基于官方maven:3-jdk-11构建,在保留Maven 3和JDK 11基础环境的同时,集成了Node.js、npm(Node.js包管理工具)和sshpass(非交互式SSH密码验证工具)。旨在为开发/构建流程提供一站式环境,支持Java后端项目编译打包、前端资源(如React/Vue)构建,以及通过SSH协议自动化传输构建产物或依赖文件。
npm run build)scp/ssh命令,适用于自动化构建流程中的文件传输场景maven:3-jdk-11镜像构建,保持与标准Maven构建流程的兼容性,可直接复用现有Maven配置若镜像已上传至Docker仓库,可直接拉取:
bashdocker pull <镜像仓库地址>/<镜像名称>:<标签>
若需本地构建,可创建包含以下内容的Dockerfile:
dockerfileFROM maven:3-jdk-11 # 安装Node.js和npm(示例使用Node.js 16,可根据需求调整版本) RUN apt-get update && apt-get install -y nodejs npm \ # 安装sshpass && apt-get install -y sshpass \ # 清理缓存以减小镜像体积 && apt-get clean && rm -rf /var/lib/apt/lists/*
然后执行构建命令:
bashdocker build -t maven-jdk11-node-sshpass:latest .
启动容器并进入交互式终端,验证工具版本:
bashdocker run -it --rm maven-jdk11-node-sshpass:latest /bin/bash # 验证Java版本 java -version # 验证Maven版本 mvn -version # 验证Node.js版本 node -v # 验证npm版本 npm -v # 验证sshpass版本 sshpass -V
挂载本地Java项目目录,执行Maven打包:
bash# 假设本地项目路径为/path/to/java-project docker run -v /path/to/java-project:/app -w /app maven-jdk11-node-sshpass:latest mvn clean package -DskipTests
-v /path/to/java-project:/app:将本地项目目录挂载到容器内/app路径-w /app:设置工作目录为/app(项目根目录)mvn clean package -DskipTests:执行Maven清理并打包(跳过测试以加速)若项目包含前端模块(如/path/to/java-project/src/main/frontend),可通过npm构建:
bashdocker run -v /path/to/java-project:/app -w /app/src/main/frontend maven-jdk11-node-sshpass:latest npm install && npm run build
npm install:安装前端依赖npm run build:执行前端打包(需项目package.json中定义build脚本)使用sshpass非交互式传输构建产物到远程服务器:
bash# 假设构建产物路径为/app/target/app.jar,远程服务器信息:user@remote-host:/deploy/path,密码为ssh-password docker run -v /path/to/java-project:/app -w /app maven-jdk11-node-sshpass:latest \ sshpass -p "ssh-password" scp target/app.jar user@remote-host:/deploy/path
sshpass -p "ssh-password":指定SSH密码(生产环境建议优先使用SSH密钥认证,避免明文密码)scp target/app.jar user@remote-host:/deploy/path:通过SCP传输文件本镜像继承自maven:3-jdk-11,支持以下常用环境变量配置:
MAVEN_OPTS:Maven运行时JVM参数,如-e "-DMAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=256m"JAVA_HOME:JDK安装路径(默认已配置为/usr/local/openjdk-11)NODE_HOME:Node.js安装路径(默认已配置,可通过which node查看)为提高构建效率和产物持久化,建议挂载以下目录:
~/.m2/repository):缓存依赖,避免重复下载
bashdocker run -v ~/.m2/repository:/root/.m2/repository -v /path/to/project:/app -w /app <镜像名> mvn clean package
node_modules):缓存前端依赖,加速构建
bashdocker run -v /path/to/project/frontend/node_modules:/app/frontend/node_modules -w /app/frontend <镜像名> npm run build
sshpass -p传递明文密码存在安全风险,生产环境建议优先配置SSH密钥认证(将密钥挂载到容器/root/.ssh目录)apt-get install -y nodejs=16.x.x)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务