windows系统的docker desktop安装 openjdk22 和 maven 3.9.8 的环境

news/2024/12/22 18:38:33/

安装 Docker Desktop:
  1. 如果尚未安装 Docker Desktop,请从 Docker 官网 下载并安装 Docker Desktop。

创建 Dockerfile:
  • 在你的开发目录中,创建一个名为 Dockerfile 的文件。这是 Docker 构建镜像所需的配置文件。

  • 打开 Dockerfile 并添加以下内容以安装 OpenJDK 22 和 Maven 3.9.8:

# 使用 OpenJDK 22 作为基础镜像
FROM openjdk:22-jdk


# 安装 Maven
ENV MAVEN_VERSION=3.9.8
RUN curl -fsSL https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz -o /tmp/maven.tar.gz \
    && tar xz -C /opt -f /tmp/maven.tar.gz \
    && ln -s /opt/apache-maven-${MAVEN_VERSION} /opt/maven \
    && ln -s /opt/maven/bin/mvn /usr/bin/mvn \
    && mvn -version

# 设置工作目录
WORKDIR /app

# 复制你的代码到容器
# COPY . /app

# 默认运行 Maven 命令(可以根据需要修改)
#CMD ["mvn", "--version"]
CMD ["bash"]

构建 Docker 镜像:
  • 打开命令行或终端,导航到包含 Dockerfile 的目录,然后运行以下命令来构建镜像:

docker build -t my-java-dev-env .

运行 Docker 容器:
  • 构建完成后,可以使用以下命令启动一个容器

docker run -it --name java-dev-container my-java-dev-env

这将启动一个交互式容器,你可以在其中进行开发。如果你希望将本地代码挂载到容器中,可以使用 -v 选项来挂载卷:

docker run -it --name java-dev-container -v /path/to/your/code:/app my-java-dev-env

  • 替换 /path/to/your/code 为你本地代码的路径。

说明:

CMD ["mvn", "--version"] 指令会在容器启动时运行 Maven 命令来显示版本信息。如果容器启动后立即退出,这通常是因为 mvn --version 命令执行完毕后,容器没有其他活动可以继续运行。你可以尝试使用交互式 Shell 作为默认命令:

CMD ["bash"]

然后重新构建镜像并启动容器

docker build -t my-java-dev-env .

docker run -it --name java-dev-container my-java-dev-env

你可以进入容器并手动检查 Maven 和 Java 的安装情况:

mvn --version

java -version

想把本地maven的setting的配置文件挂在上去,可重新构建镜像并启动:

docker build -t my-java-dev-env .

docker run -it --name java-dev-container  -v D:/11/app6/:/app  -v D:/11/app6/conf/settings.xml:/opt/maven/conf/settings.xml  my-java-dev-env


http://www.ppmy.cn/news/1506333.html

相关文章

使用es-hadoop同步hive和es之间数据

💻近期在华为云连接es时的时候发现不能输入账号密码,后面联系华为工程师了解到,华为云默认是非安全模式,即不需要输入账号密码。 如果对你有所帮助,欢迎点赞收藏关注不迷路哦💓 目录 使用es-hadoop同步h…

算法力扣刷题记录 七十【70. 爬楼梯及算法性能分析:时间复杂度和空间复杂度】

前言 动态规划章节第二篇。记录 七十【70. 爬楼梯】 一、题目阅读 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释&#xf…

python机器人编程——开发一个pymatlab工具箱(上)

目录 一、前言二、实现过程2.1 封装属性2.2 数据流化显示2.3 输入数据的适应性 三、核心代码说明3.1 设置缓存3.2 随机信号3.3 根据设置绘图 五、总结四、源码PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源 一、前言 我们知道m…

rm命令学习

删除文件 rm rm命令(remove的简写)用来删除文件。这条命令会彻底地删除文件,文件将不复存在。Linux命令行可没有“垃圾箱”或“回收站”之类的东西。shell缺少一个恢复删除文件的命令,最好一开始就小心些。 如果你想确保绝对没有…

低代码开发:机遇与挑战

目录 一、什么是低代码开发? 二、低代码开发的机遇 1. 加速开发周期 2. 降低开发门槛 3. 提高生产效率 三、低代码开发的挑战 1. 定制化限制 2. 技术债务累积 3. 安全性问题 四、低代码开发如何改变开发者的工作方式? 1. 专注业务逻辑 2. 团队…

Gdao v1.1.0:Go语言高效ORM框架全面解析

简介:gdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用gdao,可以在持久层设计上,减少30%…

Linux: security: openssh: v9.8 的一个小改动

这个改动,相对于之前的版本,产生的变化是per-session相关的进程名称,由sshd变成了sshd-session。如果有应用依赖于这个进程名称,就需要注意了。 https://www.openssh.com/releasenotes.html#9.8p1 * sshd(8): the server has been split into a listener binary, sshd(8),a…

Java高级Day23-HashMap

74.HashMap Map接口常用实现类:HashMap、Hashtable和Properties HashMap是Map接口使用频率最高的实现类 HashMap是以key-value对的方式来存储数据 key不能重复,但是值可以重复,允许使用null健和null值 如果添加相同的key,会覆…