通过Docker Compose的方式在Docker中安装Maven环境
目前可以说 Docker 已经是在开发部署中成为主流,所以我们很多环境和工具都会安装在 Docker 容器中,Maven 环境是 SpringBoot 项目中最常用的依赖管理工具。当我们使用自动运维工具如 Ansible、Chef 、Puppet、Walle、Spug等)管理和部署 Maven 项目时,就需要在自动运维工具运行环境中有 Maven 环境的支持。
如果这些环境都安装在服务器中并没有安装容器中其实都很好办。但是一旦这些环境都安装在 Docker 容器中时,每当我们安装这些项目依赖工具时往往会遇到一些奇奇葩葩的问题,所以今天对 Docker 中安装 Maven 环境做个简单的记录。
在这安装过程中我使用的是 Docker Compose,所以在此之前需要安装好 Compose。
编写一个更简单的 docker-compose.yml 文件,它只需启动一个 Maven 容器,并暴露 Maven 的一些基本配置。
version: '3'
services:maven:image: maven:latestcontainer_name: mavenvolumes:- ~/.m2:/root/.m2 # 主机上 Maven 的本地仓库目录(~/.m2)挂载到容器中的 /root/.m2 目录,这样可以实现 Maven 的缓存持久化,避免每次启动容器都重新下载依赖- /path/to/your/settings.xml:/usr/share/maven/conf/settings.xml # 主机上的 settings.xml 文件挂载到容器中的 /usr/share/maven/conf/settings.xml 路径下。这样 Maven 将使用您自定义的 settings.xml 文件working_dir: /usr/src/app # 容器的工作目录为 /usr/src/app,以便您可以在容器中执行 Maven 构建命令command: sleep infinity # 使用了 sleep infinity 命令来替换默认的 Maven 构建命令。这个命令会让容器永远休眠,从而避免执行任何构建命令
就是这么简单,编写完 yml 文件后直接使用 docker-compose up 启动 Maven 容器就可以了。
如果您希望在宿主机中使用容器中的 Maven 环境,您可以在宿主机上执行 Maven 命令时使用 Docker 执行命令。以下是一个示例:
docker exec maven mvn clean install
# 或
docker-compose exec maven mvn clean install
这个命令将会在 Maven 容器中执行 mvn clean install 命令。这样您就可以在宿主机上使用容器中的 Maven 环境进行构建操作了。
您也可以将这个命令设置为一个别名,以便更方便地在宿主机中使用。例如,您可以在 ~/.bashrc 文件中添加以下行:
alias mvn='docker exec maven mvn'
# 或
alias mvn='docker-compose exec maven mvn'
这样,您只需在终端中执行 mvn 命令,就相当于在 Maven 容器中执行 Maven 命令,从而可以在宿主机中使用容器中的 Maven 环境了。
这么简单也要记录这个安装过程是因为我开始安装时安装官方例子和网上一些教程来进行安装一直失败,所以就做个简单的记录。在官方和网上的一些例子例子中大家对 command 要么没有配置(默认会执行 mvn 命令)要么配置了 clean 和 install,这样的话在启动容器时会去工作目录下找需要编译的项目,如果找不到就会报以下这些错误。
[ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/). Please verify you invoked Maven from the correct directory. -> [Help 1]
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy.
相关文章:
通过Docker Compose的方式在Docker中安装Maven环境
目前可以说 Docker 已经是在开发部署中成为主流,所以我们很多环境和工具都会安装在 Docker 容器中,Maven 环境是 SpringBoot 项目中最常用的依赖管理工具。当我们使用自动运维工具如 Ansible、Chef 、Puppet、Walle、Spug等)管理和部署 Maven…...
Python实现线性逻辑回归和非线性逻辑回归
线性逻辑回归 # -*- coding: utf-8 -*- """ Created on 2024.2.20author: rubyw """import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import classification_report from sklearn import preprocessing from sklearn…...
【软考】软件维护
目录 一、说明二、正确性维护三、适应性维护四、完善性维护五、预防性维护 一、说明 1.软件维护主要是根据需求变化或硬件环境的变化对应用程序进行部分或全部修改 2.修改时应充分利用源程序,修改后要填写程序修改登记表,并在程度变更通知书上写明新旧程…...
突破性创新:OpenAI推出Sora视频模型,预示视频制作技术的未来已到来!
一、前言 此页面上的所有视频均由 Sora 直接生成,未经修改。 OpenAI - Sora is an AI model that can create realistic and imaginative scenes from text instructions. 2024 年 2 月 16 日,OpenAI 发布 AI 视频模型 Sora,60 秒的一镜到底…...
【Web前端笔记10】CSS3新特性
10 CSS3新特性 1、圆角 2、阴影 (1)盒阴影 3、背景渐变 (1)线性渐变(主要掌握这种就可) (2)径向渐变 &…...
LabVIEW荧光显微镜下微管运动仿真系统开发
LabVIEW荧光显微镜下微管运动仿真系统开发 在生物医学研究中,对微管运动的观察和分析至关重要。介绍了一个基于LabVIEW的仿真系统,模拟荧光显微镜下微管的运动过程。该系统提供了一个高效、可靠的工具,用于研究微管与运动蛋白(如…...
【Java面试】MQ(Message Queue)消息队列
目录 一、MQ介绍二、MQ的使用1应用解耦2异步处理3流量削峰4日志处理5消息通讯三、使用 MQ 的缺陷1.系统可用性降低:2.系统复杂性变高3.一致性问题四、常用的 MQActiveMQ:RabbitMQ:RocketMQ:Kafka:五、如何保证MQ的高可用?ActiveMQ:RabbitMQ:RocketMQ:Kafka:六、如何保…...
【安卓基础1】初识Android
🏆作者简介:|康有为| ,大四在读,目前在小米安卓实习,毕业入职。 🏆安卓学习资料推荐: 视频:b站搜动脑学院 视频链接 (他们的视频后面一部分没再更新,看看前面…...
08-静态pod(了解即可,不重要)
我们都知道,pod是kubelet创建的,那么创建的流程是什么呐? 此时我们需要了解我们k8s中config.yaml配置文件了; 他的存放路径:【/var/lib/kubelet/config.yaml】 一、查看静态pod的路径 [rootk8s231 ~]# vim /var/lib…...
PROBIS铂思金融破产后续:ASIC牌照已注销
2024年1月31日,PROBIS铂思金融的澳大利亚ASIC牌照 (AFSL 338241) 被注销《差价合约经纪商PROBIS宣布破产,澳大利亚金融服务牌照遭暂停》,这也就意味着,PROBIS铂思金融目前已经没有任何金融牌照。 值得注意的是,时至今日…...
数字世界的探索者:计算机相关专业电影精选推荐
目录 推荐计算机专业必看的几部电影 《黑客帝国》 《社交网络》 《乔布斯传》 《心灵捕手》 《源代码》 《盗梦空间》 《头号玩家》 《我是谁:没有绝对安全的系统》 《战争游戏》(WarGames) 《模仿游戏》(The Imitation Game) 《硅谷》(Silicon Valley) …...
Spring Boot项目中TaskDecorator的应用实践
一、前言 TaskDecorator是一个执行回调方法的装饰器,主要应用于传递上下文,或者提供任务的监控/统计信息,可以用于处理子线程与主线程间数据传递的问题。 二、开发示例 1.自定义TaskDecorator import org.springframework.core.task.Task…...
511. 游戏玩法分析 I
文章目录 题意思路代码 题意 题目链接 统计每个用户第一次登陆平台时间 思路 代码 select player_id, min(event_date) as first_login from Activity group by player_id;...
大模型训练流程(三)奖励模型
为什么需要奖励模型 因为指令微调后的模型输出可能不符合人类偏好,所以需要利用强化学习优化模型,而奖励模型是强化学习的关键一步,所以需要训练奖励模型。 1.模型输出可能不符合人类偏好 上一篇讲的SFT只是将预训练模型中的知识给引导出来…...
替换if...else的锦囊妙计
目录 前言 一、又臭又长的if...else 二、消除if...else的锦囊妙计 1、使用注解 2、动态拼接名称 3、模板方法判断 4.策略工厂模式 5.责任链模式 6、其他的消除if...else的方法 1.根据不同的数字返回不同的字符串 2.集合中的判断 3.简单的判断 4.spring中的判断 原文…...
新建一个flask项目
在Flask中创建一个新的项目,您可以遵循以下步骤: 确保您已经安装了Python环境。如果还未安装Flask,可以通过pip来安装: pip install flask创建一个新的文件夹作为您的项目文件夹,例如myflaskapp: mkdir …...
【Linux 内核源码分析】物理内存组织结构
多处理器系统两种体系结构: 非一致内存访问(Non-Uniform Memory Access,NUMA):这种体系结构下,内存被划分成多个内存节点,每个节点由不同的处理器访问。访问一个内存节点所需的时间取决于处理器…...
力扣日记2.21-【回溯算法篇】46. 全排列
力扣日记:【回溯算法篇】46. 全排列 日期:2023.2.21 参考:代码随想录、力扣 46. 全排列 题目描述 难度:中等 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&…...
[AIGC] Kafka 消费者的实现原理
在 Kafka 中,消费者通过订阅主题来消费数据。每个消费者都属于一个消费者组,消费者组中的多个消费者可以共同消费一个主题,实现分布式消费。每个消费者都会维护自己的偏移量,用于记录已经读取到的消息位置。消费者可以选择手动提交…...
Dubbo框架admin搭建
Dubbo服务监控平台,dubbo-admin是图形化的服务管理界面,从服务注册中心获取所有的提供者和消费者的配置。 dubbo-admin是前后端分离的项目,前端使用Vue,后端使用springboot。因此,前端需要nodejs环境,后端需…...
【Midjourney纹理生成高阶秘籍】:20年AI视觉工程师亲授5大不可外传的材质控制法则
更多请点击: https://kaifayun.com 第一章:纹理生成的本质:从像素噪声到物理材质的范式跃迁 纹理生成早已超越了早期“随机像素着色”的朴素阶段,演进为融合程序化建模、物理渲染方程(PBR)与微表面理论的系…...
D2001UK,1GHz频段下2.5W高功率输出的单端式硅DMOS RF FET射频晶体管
简介今天我要向大家介绍的是 Semelab 的硅DMOS RF FET晶体管——D2001UK。这是一款专为VHF/UHF通信频段(50 MHz至1 GHz)设计的单端式射频功率场效应管,在28V工作电压、1GHz频率下可提供2.5W的输出功率。作为一款高性能射频器件,它…...
外泌体检测推荐公司
外泌体检测推荐公司 核心优势:外泌体领域一站式技术龙头,搭建从外泌体提取、鉴定到分子检测的完整技术体系,可提供包括样本处理、分离纯化、表征分析、核酸 / 蛋白标志物检测等全链条科研服务,实验体系成熟、整合度高、交付顺畅。…...
Sunshine游戏串流终极指南:5大优化策略实现300%性能提升
Sunshine游戏串流终极指南:5大优化策略实现300%性能提升 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine作为一款开源自托管的游戏串流服务器,为Mo…...
万店精灵上货软件引领电商时代
万店精灵上货软件:http://www.wandianjingling.com/q/r/FV02331,1688,淘宝,抖音,拼多多,微信小店,京东,天猫,快手 都可以上国外:TikTok Shop、Temu、Shopee2&…...
微信好友关系检测完整指南:快速找出谁删了你
微信好友关系检测完整指南:快速找出谁删了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 你是否曾…...
告别IBus!在Ubuntu 22.04上为Fcitx5安装搜狗输入法并设置自启动的完整流程
在Ubuntu 22.04上深度配置Fcitx5与搜狗输入法的现代输入方案 对于追求高效输入的Linux用户而言,输入法框架的选择往往决定了日常使用的流畅度体验。传统IBus框架虽然预装在大多数发行版中,但在中文输入场景下常显力不从心——词库更新滞后、云输入支持有…...
为你的AI Agent项目选择并接入Taotoken多模型聚合平台
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为你的AI Agent项目选择并接入Taotoken多模型聚合平台 当你着手构建一个智能Agent应用时,很快会面临一个现实问题&…...
如何一键保存整个网页?告别滚动拼接的终极解决方案
如何一键保存整个网页?告别滚动拼接的终极解决方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extensio…...
如何实现EditorConfig-Sublime与VSCode、IntelliJ的无缝协同工作流
如何实现EditorConfig-Sublime与VSCode、IntelliJ的无缝协同工作流 【免费下载链接】editorconfig-sublime Sublime Text plugin for EditorConfig - Helps developers maintain consistent coding styles between different editors 项目地址: https://gitcode.com/gh_mirro…...
