Docker部署(5)——使用docker run命令部署运行jar项目

       对于一些简单的单体项目,可以使用 docker run 命令可以直接在命令行中运行容器,无需事先构建镜像。这相较于之前使用的 dockerfile 文件来运行部署项目相当于是另外一种简单的部署方法,关于之前使用dockerfile 文件来运行部署这种方法,具体可以参考下面这篇文章:

Docker部署(1)——将jar包打成docker镜像并启动容器

      首先,先将jar包和配置文件放到项目目录下。

 

 然后直接在这个目录下运行 docker run 命令即可:

ocker run -d -p 20238:20238 --name my-container-name \
-v $(pwd):/app \
-e CONFIG_FILE=/app/application.yml \
-e CONFIG_FILE_1=/app/config1.properties \
-w /app \
dockette/jdk8 java -Duser.timezone=GMT+08 -Dfile.encoding=utf-8 -jar /app/reportools-1.0.0.RELEASE.jar

运行结果如下: 

关于docker命令的相关解释:

① : -v 参数,您可以将宿主机上的目录或文件挂载到容器中。在您的命令中,通过 -v 参数挂载了配置文件、模板文件和应用程序 JAR 文件到容器的相应路径。关于 -v $(pwd):/app \   是下面代码简化后的结果:

-v /mnt/docker/files/ssexcel/config:/app/config \
-v /mnt/docker/files/ssexcel/template.xlsx:/app/template.xlsx \

-v /mnt/docker/files/ssexcel/reportools-1.0.0.RELEASE.jar:/app/app.jar \

②:CONFIG_FILE 是一个环境变量,用于指定配置文件的路径。在给定的命令中,通过 -e CONFIG_FILE=/app/application.yml 将环境变量 CONFIG_FILE 设置为 /app/application.yml,即将应用程序的配置文件路径设置为 /app/application.yml。-e 参数用于设置容器内的环境变量。在命令中,设置了两个环境变量 CONFIG_FILE 和 CONFIG_FILE_1。

-e 是 Docker 命令行选项的一部分,用于设置容器内的环境变量。它用于在运行容器时向容器内部传递环境变量。通过使用 -e 选项,可以将键值对形式的环境变量设置为容器内的环境变量。例如,-e VAR_NAME=value 将设置一个名为 VAR_NAME 的环境变量,其值为 value。

③:-d 参数表示将容器以后台(守护进程)模式运行。这样可以让容器在后台持续运行而不阻塞终端。接下来,-p 20238:20238 参数将容器的端口 20238 映射到主机的端口 20238,这样可以通过主机上的该端口访问容器内的服务。

最后,dockette/jdk8  是指定使用的镜像名称,java -jar app.jar 是要在容器中执行的命令。

④:如果要在这个基础上加上对数据的库的容器的连接,可以使用 Docker 的网络功能来实现两个容器之间的通信,一个容器用于运行应用程序 JAR 文件,另一个容器用于运行 MySQL 服务。这样可以更好地解耦和管理应用程序和数据库。修改命令如下:

  1. 创建一个自定义网络:

    docker network create my-network
  2. 运行 MySQL 容器,并将其连接到该网络:

    docker run -d --name mysql-container --network my-network -p <MySQL端口>:3306 -e MYSQL_ROOT_PASSWORD=<密码> mysql:5.6

    替换 <MySQL端口><密码> 为实际的 MySQL 端口和密码。

  3. 运行应用程序容器,并将其连接到相同的网络:

    docker run -d --name app-container --network my-network -p 20238:20238 \
    -v /mnt/docker/files/ssexcel/config:/app/config \
    -v /mnt/docker/files/ssexcel/template.xlsx:/app/template.xlsx \
    -e CONFIG_FILE=/app/config/application.yml \
    -e CONFIG_FILE_1=/app/config/config1.properties \
    -e DB_HOST=mysql-container -e DB_PORT=<MySQL端口> \
    -v /mnt/docker/files/ssexcel/reportools-1.0.0.RELEASE.jar:/app/app.jar \
    -w /app \
    openjdk:8 java -Duser.timezone=GMT+08 -Dfile.encoding=utf-8 -jar app.jar

    注意,DB_HOST 环境变量中的值为 mysql-container,这是 MySQL 容器的名称,因为它们在同一网络中,可以通过容器名称进行通信。

总结

        使用 docker run 命令以及 Dockerfile 文件这两种方式部署项目之间存在以下区别:

docker run 命令:

        使用 docker run 命令可以直接在命令行中运行容器,无需事先构建镜像。在命令行中提供的参数和选项定义了容器的配置和运行时行为。适用于简单的场景,不需要自定义的 Docker 镜像。


Dockerfile 文件:

        使用 Dockerfile 可以定义一个自定义镜像,包含特定配置和软件包。Dockerfile 文件描述了构建镜像时步骤和指令,通过构建过程生成镜像。可以根据需求自由修改 Dockerfile 中内容,添加依赖项、配置文件等。适用于复杂的程序或项目,需要自定义镜像,并且可能需要部署到多个环境中。使用 Dockerfile 可以实现更高级容器化设置,例如添加特定的环境变量、安装所需软件包、配置网络等。此外使用 Dockerfile 还可以与 CI/CD 工具集成,实现自动的持续集成和部署。

选择使用哪种方式取决于您的具体需求和场景:

  • 如果只是简单的容器化,不需要自定义镜像,可以使用 docker run 命令。
  • 如果项目较为复杂,涉及多个组件和配置,或者需要在不同环境中部署,建议使用 Dockerfile 构建自定义镜像。这样可以更好地管理和复用代码,并确保在不同环境中的一致性。

        总之,docker run 命令适用于简单的容器运行,而 Dockerfile 适用于构建自定义镜像和管理复杂的项目或应用程序。选择使用哪种方式根据您的具体需求和项目复杂性来决定。

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

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

相关文章

错误:依赖检测失败: mysql-community-libs(x86-64) >= 5.7.9 被 (已安裝) mysql-community-li

错误&#xff1a; 错误原因&#xff1a;没有删除之前安装的依赖问题 解决办法&#xff1a; yum remove mysql-libs 再用下面指令检查一遍&#xff1a; rpm -qa | grep mysql 如果有还未清理的&#xff0c;用下面指令&#xff1a; rpm -e xxx

分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库

本文主要介绍分布式定时任务框架Quartz集成SpringBoot持久化数据到Mysql数据库的操作&#xff0c;上一篇文章使用Quartz创建定时任务都是保存在内存中&#xff0c;如果服务重启定时任务就会失效&#xff0c;所以Quartz官方也提供将定时任务等信息持久化到Mysql数据库的功能&…

C语言数值表示——进制、数值存储方式

进制 进制也就是进位制&#xff0c;是人们规定的一种进位方法对于任何一种进制—X进制&#xff0c;就表示某一位置上的数运算时是逢X进一位 十进制是逢十进一&#xff0c;十六进制是逢十六进一&#xff0c;二进制就是逢二进一&#xff0c;以此类推&#xff0c;x进制就是逢x进位…

如何提高工业网关的数据传输速度?

工业网关是工业物联网系统中不可或缺的设备&#xff0c;提高工业网关的数据采集、传输速度&#xff0c;是保障和优化物联网系统运营效率的基础。如何提高工业物联网关的数据传输速度&#xff1f;本篇就为大家简单介绍一下。 1、选用高品质网络设备 选用具有足够带宽容量的高质…

项目实践:类平面抓取点计算(占位,后面补充)

文章目录 文章目录&#xff1a;3D视觉个人学习目录微信&#xff1a;dhlddxB站: Non-Stop_

深入浅出:手把手教你实现顺序表

一、什么是顺序表 顺序表是一种数据结构&#xff0c;或者说&#xff0c;是数据在内存中存储和管理的一种方式。顺序表要求每个数据要从第一个位置开始&#xff0c;依次挨着放。这就很适合使用C语言中的数组来实现。 很多朋友可能会觉得&#xff0c;那有啥可以讲的&#xff1f;我…

Qt网络通信——获取本机网络信息

查询一个主机的MAC地址或者IP地址是网络应用中常用到的功能&#xff0c;Qt提供了QHostInfo和QNetworkInterface 类可以用于此类信息的查询 1.QHostInfo 类&#xff08;显示和查找本地的信息&#xff09;是的主要函数 类别 函数原型作用公共函数QList <QHostAdress> addr…

SpringBoot项目配置文件数据库用户名密码加密

1、需求 在使用SpringBoot开发过程中&#xff0c;会将一些敏感信息配置到SpringBoot项目的配置文件中(不考虑使用配置中心的情况 )&#xff0c;例如数据库的用户名和密码、Redis的密码等。为了保证敏感信息的安全&#xff0c;我们需要将此类数据进行加密配置。 2、操作步骤 …

docker 部署springboot(成功、截图)

1.新建sringboot工程并打包 2.编写Dockerfile文件 # 基础镜像使用java FROM openjdk:8 # 作者 MAINTAINER feng # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件&#xff0c;并链接到容器的/tmp VOLUME /tmp # 将jar包添加…

探秘二叉树后序遍历:从叶子到根的深度之旅

本篇博客会讲解力扣“145. 二叉树的后序遍历”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a; 先创建一个数组&#xff0c;用来存储二叉树后序遍历的结果。数组的大小跟树的结点个数有关。树的结点个数可以使用递归实现&#xff0c;即总个数左子树结点个数右…

Ansible

目录 Ansible简介 ansible 环境安装部署 #管理端安装 ansible //ansible 目录结构 //配置主机清单 //配置密钥对验证 ansible 命令行模块 1&#xff0e;command 模块 2&#xff0e;shell 模块 3&#xff0e;cron 模块 4&#xff0e;user 模块 5&#xff0e;group 模块 6&am…

人生的回忆

回忆是人类宝贵的精神财富&#xff0c;它们像一串串珍珠&#xff0c;串联起我们生活中的每一个片段。 回忆是时间的见证者&#xff0c;它们承载着我们成长、经历、悲欢离合的点点滴滴。 回忆让我们重温过去的欢笑与眼泪&#xff0c;感受那些已经逝去的时光。它们就像一本翻开的…

Caffine和Guava的refreshAfterWrite的异同

背景: guava和caffine的refreshAfterWrite方法在用于本地缓存的场景是非常常用的&#xff0c;本文通过例子列举下caffine的refreshAfterWrite方法和guava的refreshAfterWrite的相同点和不同点 相同点/不同点&#xff1a; 以下都是使用keyXYZ作为例子 场景1&#xff1a;一开…

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测&a…

基于沙猫群算法优化的BP神经网络(预测应用) - 附代码

基于沙猫群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于沙猫群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.沙猫群优化BP神经网络2.1 BP神经网络参数设置2.2 沙猫群算法应用 4.测试结果&#xff1a;5.Matlab代…

NFTScan | 08.21~08.27 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。周期&#xff1a;2023.08.21~ 2023.08.27 NFT Hot News 01/ NFT 品牌体验平台 Recur 将于 11 月 16 日彻底关闭&#xff0c;此前曾获 5000 万美元融资 8 月 21 日&#xff0c;NFT 品牌体验平台 Recur 在 X…

mall :rabbit项目源码解析

文章目录 一、mall开源项目1.1 来源1.2 项目转移1.3 项目克隆 二、RabbitMQ 消息中间件2.1 rabbit简介2.2 分布式后端项目的使用流程2.3 分布式后端项目的使用场景 三、安装RabbitMQ(Win10)3.1安装erLang语言&#xff0c;配置环境变量3.2 安装RabbitMQ服务端3.3 测试安装效果 四…

海康机器人工业相机SDK MVS安装教程

文章目录 一. 海康机器人介绍二. 工业相机客户端安装教程 一. 海康机器人介绍 海康机器人是面向全球的机器视觉和移动机器人产品及解决方案提供商&#xff0c;业务聚焦于工业物联网、智慧物流和智能制造&#xff0c;构建开放合作生态&#xff0c;为工业和物流领域用户提供服务…

美国纽约10日游

一、前言 我有两周断更了&#xff0c;原因是去纽约只顾着玩&#xff0c;没时间写&#xff0c;今天有时间正好和大家分享一下去纽约的攻略 二、以下是一个10天去美国纽约旅游的攻略&#xff0c;十万以内&#xff0c;包括机票、酒店、交通、餐饮和景点门票等费用&#xff1a; 第…

js、PHP连接外卖小票机打印机方案(调用佳博、芯烨等)

前言&#xff1a; 目前开发需要用到电脑直接连接外卖小票机打印小票&#xff0c;查阅各种资料&#xff0c;使用 6612345浏览器 终于解决了这个问题。 效果&#xff1a; PHP、js直接连接小票机并且自动出票。 支持的小票机&#xff1a; 目前测试可以的有&#xff1a;电脑A4打印…