使用Docker Compose给自己上传的JAR打包成镜像并自动启动容器

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过编写一个docker-compose.yml文件,可以简化Docker容器的管理。本文将介绍如何使用Docker Compose将一个上传的JAR文件打包成Docker镜像,并在容器中自动启动该应用程序。

一、准备工作

1. 安装Docker和Docker Compose
在开始之前,确保你已经安装了Docker和Docker Compose,如已安装可跳过。可以通过以下命令进行安装:

安装Docker:

sudo apt-get update
sudo apt-get install -y docker.io

安装Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

二、项目结构

首先,创建一个项目目录,并将你的JAR文件放在该目录中。假设你的JAR文件名为app.jar。项目目录结构如下:

my-docker-app/
├── app.jar
├── Dockerfile
└── docker-compose.yml

三、编写Dockerfile

Dockerfile用于定义如何构建Docker镜像。创建一个Dockerfile,内容如下:

# 基础镜像
FROM openjdk:11-jre-slim# 作者信息
LABEL maintainer="your-email@example.com"# 将JAR文件复制到镜像中
COPY app.jar /usr/src/app/app.jar# 设置工作目录
WORKDIR /usr/src/app# 暴露应用程序端口
EXPOSE 8080# 运行应用程序
ENTRYPOINT ["java", "-jar", "app.jar"]

具体版本和信息可自定义更改

四、编写docker-compose.yml

docker-compose.yml用于定义多容器Docker应用程序的服务、网络和卷。创建一个docker-compose.yml文件,内容如下:

version: '3.8'services:app:build:context: .dockerfile: Dockerfileimage: image_name  # 指定镜像名称container_name: container_name  # 指定容器名称ports:- "8017:8080"  # 映射容器的8017端口到主机的8080端口volumes:- /my-docker-app/logs:/logs  # 挂载日志目录  environment:- JAVA_OPTS=-Xmx512m  # 可选:设置JVM最大内存restart: always

五、构建和启动容器

在项目目录中,运行以下命令构建Docker镜像并启动容器:

docker-compose up --build -d

以上命令会执行以下操作:

1. 构建镜像:根据Dockerfile构建Docker镜像。
2. 启动容器:根据docker-compose.yml定义的服务,启动容器。
3. 后台运行:使用 -d 选项,让容器在后台运行。

六、验证容器状态

使用以下命令查看容器状态,确保容器已经启动并运行:

docker-compose ps

输出应类似于以下内容,表示容器正在运行:

     Name                    Command               State          Ports        
--------------------------------------------------------------------------------
container_name   java -jar app.jar            Up      0.0.0.0:8087->8080/tcp

七、日志查看

可以使用以下命令查看容器的日志输出,检查应用程序是否正常运行:

docker-compose logs -f

八、停止和移除容器

当不再需要运行容器时,可以使用以下命令停止并移除容器:

docker-compose down

九、总结

本文介绍了如何使用Docker Compose将一个上传的JAR文件打包成Docker镜像,并在容器中自动启动该应用程序。通过Docker Compose,可以简化多容器应用程序的管理和部署,提高开发和运维效率。

主要步骤包括:

  1. 安装Docker和Docker Compose。
  2. 创建项目目录并放置JAR文件。
  3. 编写Dockerfile定义镜像构建过程。
  4. 编写docker-compose.yml定义服务配置。
  5. 使用docker-compose up --build -d命令构建并启动容器。
  6. 验证容器状态和查看日志。

希望本文对你在Docker和Docker Compose的使用上有所帮助。如有任何问题或建议,欢迎交流讨论。

使用docker-compose给自己上传的JAR打包成镜像并自动启动容器------每次更新jar包自动化执行脚本传送门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MSP430单片机快速上手CSS开发环境(24电赛省赛)

前言:3天学完MSP430单片机,为了对应电赛,同时写下这篇笔记,用来熟悉对应开发环境,看的懂对应代码。 #MSP430开发环境安装 MSP单片机是TI(德州仪器)半导体厂家产的,一款16位单片机…

【开源库学习】libodb库学习(十一)

12 乐观并发 只要我们在单个数据库事务中执行与特定应用程序事务对应的所有数据库操作,ODB事务模型(第3.5节,“事务”)就保证了一致性。也就是说,如果我们在数据库事务中加载一个对象并在同一事务中更新它,…

【机器学习】机器学习解决的问题特点、机器学习学的是什么、怎么学、如何构建高效机器学习模型的策略、机器学习的分类以及机器学习、模式识别、数据挖掘和人工智能的区别

引言 机器学习是人工智能的一个重要分支,主要解决的是如何通过算法让机器从数据中自动学习规律和知识,以完成特定任务或解决特定问题。 文章目录 引言一、机器学习解决的是什么样的问题1.2 数据驱动的预测问题1.3 数据理解与挖掘1.4 优化与决策问题1.5 异…

如何开启或者关闭 Windows 安全登录?

什么是安全登录 什么是 Windows 安全登录呢?安全登录是 Windows 附加的一个组件,它可以在用户需要登录的之前先将登录界面隐藏,只有当用户按下 CtrlAltDelete 之后才出现登录屏幕,这样可以防止那些模拟登录界面的程序获取密码信息…

华为云技术精髓笔记(四)-CES基础入门实战

华为云技术精髓笔记(四) CES基础入门实战 一、监控ECS性能 1、 远程登录ECS 步骤一 双击实验桌面的“Xfce终端”打开Terminal,输入以下命令登录云服务器。注意:请使用云服务器的公网IP替换命令中的【EIP】。 LANGen_us.UTF-8 ssh rootEIP说明&#x…

ARM功耗管理之功耗和安全

安全之安全(security)博客目录导读 思考:功耗与安全?超频攻击?欠压攻击?低功耗流程中的安全? 睡眠唤醒流程中,安全相关寄存器的备份恢复 举例:比如某DMA通道,芯片逻辑默认为安全通…

centos/Ubuntu安装Nginx服务器

安装方式 使用系统自带的软件包管理器快速安装(如centos的yum)到官网下载压缩包安装(https://nginx.org/en/download.html)docker容器实例 下面是昨天以第二种方式安装的命令小记! centos # 下载(https…

使用原生 HTML + JS 实现类似 ChatGPT 的文字逐字显示效果

ChatGPT 的逐字显示效果很酷炫&#xff0c;那么我们可以尝试实现类似的效果。 定义一个基本 HTML 结构 <div class"chat-container"><div id"message"></div> </div>编写 JS 代码 const messageElement document.getElementBy…

压缩视频在线免费 怎么免费压缩视频大小 哪个软件可以免费压缩视频

在数字媒体时代&#xff0c;视频文件的体积越来越大&#xff0c;这就需要我们找到高效的方式来压缩视频&#xff0c;以节省存储空间和提升分享速度。本文将为您介绍几款免费的视频压缩软件&#xff0c;帮助您轻松应对视频文件管理难题。 方法一、 安装并打开一款的视频软件。 …

Git之repo sync -c与repo sync -dc用法区别四十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

解决云服务器CPU占用率接近100%问题

黑客通常利用云服务器开放的端口攻击云服务器&#xff0c;造成云服务器CPU占用率接近100%&#xff0c;云服务器CPU资源为黑客所用&#xff0c;例如&#xff1a;挖矿。 top命令查看资源使用情况 [hadoopMaster ~]$ top ...PID USER PR NI VIRT RES SHR S %CPU %…

【机器学习框架TensorFlow和PyTorch】基本使用指南

机器学习框架TensorFlow和PyTorch&#xff1a;基本使用指南 目录 引言TensorFlow概述 TensorFlow简介TensorFlow的基本使用 PyTorch概述 PyTorch简介PyTorch的基本使用 TensorFlow和PyTorch的对比结论 引言 随着深度学习的快速发展&#xff0c;机器学习框架在实际应用中起到…

idea springBoot启动时覆盖apollo配置中心的参数

vm options -Dorder.stat.corn“0/1 * * * * ?” 只有vm options, -D参数才能覆盖apollo参数 program arguments –key01val01 --key02val02 environment varibales envFAT;key02val02;key03val03

MySQL8.0新特性~最左前缀匹配原则被打破了

测试 在MySQL8.0.25和mysql5.7.33中创建如下 CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1, f2)); INSERT INTO t1 VALUES(1,1), (1,2), (1,3), (1,4), (1,5),(2,1), (2,2), (2,3), (2,4), (2,5); INSERT INTO t1 SELECT f1, f2 5 FROM t1; INSERT I…

linux本地互传文件

1、从服务器下载文件 scp usernameservername:/remote_path/filename ~/local_destination 2、上传本地文件到服务器 scp ~/local_path/local_filename usernameservername:/remote_path 3、从服务器下载整个目录 scp -r usernameservername:/remote_path/remote_dir/ ~/loc…

面试题 33. 二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列 题目描述示例 题解递归单调栈 题目描述 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 示例 参考以下这颗二叉搜索树&#…

【专题】百度萝卜快跑体验:Robotaxi发展现状与展望报告合集PDF分享(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p37054 百度“萝卜快跑”近期因事故与抵制引发关注&#xff0c;武汉部署超300辆全无人驾驶车。体验显示其安全但策略保守&#xff0c;行驶效率低于人类司机&#xff0c;价格亲民。阅读原文&#xff0c;获取专题报告合集全文&#xf…

Elastic 及阿里云 AI 搜索 Tech Day 将于 7 月 27 日在上海举办

活动主题 面向开发者的 AI 搜索相关技术分享&#xff0c;如 RAG、多模态搜索、向量检索等。 活动介绍 参加 Elastic 原厂与阿里云联合举办的 Generative AI 技术交流分享日。借助 The Elastic Search AI Platform&#xff0c; 使用开放且灵活的企业解决方案&#xff0c;以前所…

初学Mybatis之 Map 传参与模糊查询

实体类或数据库中的表&#xff0c;字段或参数过多&#xff0c;考虑使用 Map 接口里定义方法 int addUser(Map<String,Object> map); mapper.xml&#xff1a; parameterType 参数类型设置为 map sql 语句的 values 不一定要与数据库中的表字段相同 <insert id&quo…

Flink笔记整理(三)

Flink笔记整理&#xff08;三&#xff09; 文章目录 Flink笔记整理&#xff08;三&#xff09;五、DataStream API5.1Environment5.2 Source5.3 Transformation5.4 Sink 总结 五、DataStream API DataStream API是Flink的核心层API&#xff0c;一个Flink程序&#xff0c;其实本…