使用docker-compose扩展服务时如何在卷路径中指定迭代器?

2024-04-06

背景:我正在使用 docker-compose 来将 tomcat 服务放入 docker swarm 集群中,但目前我正在努力解决如何处理日志目录的问题,因为我想扩展服务但保留日志目录的唯一性。

考虑一下(显然)组成的 docker-compose,它只是启动 tomcat 并安装一个日志文件系统来捕获日志。

version: '2' services: tomcat: image: "tomcat:latest" hostname: tomcat-example command: /start.sh volumes: - "/data/container/tomcat/logs:/opt/tomcat/logs,z"

Versions

  • 码头工人1.11
  • docker-compose 1.7.1
  • API版本1.21

Problem:我希望了解如何将变量插入到“卷”日志路径中,以便日志目录对于扩展服务的每个实例都是唯一的

say,

volumes:
    - "/data/container/tomcat/${container_name}/logs:/opt/tomcat/logs,z"

我发现根据项目名称(或我所在的目录),容器名称实际上是已知的,那么我可以使用它吗?

例如,将项目名称设置为“tomcat”并运行docker-compose scale tomcat=2我会看到以下容器。

  • hostname/tomcat_1
  • hostname/tomcat_2

那么有什么方法可以利用它作为日志量中的变量,欢迎其他建议或方法。我意识到我可以只指定一个相对路径并让container_id处理这个问题,但现在如果我将splunk或logstash附加到日志记录设备,我需要知道哪些确实是日志记录设备而不是基本容器f /s。但理想情况下,我希望在这里使用特定的绝对路径。

提前感谢码头工人! R。


您确实不应该登录到文件系统,而应使用专门的日志管理工具,例如graylog/logstash/splunk/...。使用特定的附加程序在 Tomcat 中配置日志记录框架,或者记录到 sysout 并在 Docker 中配置日志记录驱动程序以将日志重定向到外部目标。

这就是说,如果您确实想采用文件系统方式,只需使用常规的未命名卷,然后调用docker inspect在容器上查找文件系统上卷的路径:

[...snip...]
"Mounts": [
    {
        "Type": "volume",
        "Name": "b8c...SomeHash...48d6e",
        "Source": "/var/lib/docker/volumes/b8c...SomeHash...48d6e/_data",
        "Destination": "/opt/tomcat/logs",
[...snip...]

如果您想在特定位置拥有漂亮的名称,请使用脚本创建符号链接。

然而,我仍然对这个解决方案持怀疑态度,尤其是在多主机群环境中。记录到外部专业服务是您的用例中的最佳选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用docker-compose扩展服务时如何在卷路径中指定迭代器? 的相关文章

随机推荐

  • 柯里化和部分应用有什么区别?

    我经常在互联网上看到各种抱怨 认为其他人的柯里化示例不是柯里化 而实际上只是部分应用 我还没有找到关于什么是部分应用或者它与柯里化有何不同的合理解释 似乎存在普遍的混乱 等效的示例在某些地方被描述为柯里化 而在其他地方则被描述为部分应用 有
  • 雄辩的push()和save()区别

    我读过关于 eloquent 的 laravel 4 文档 并且对 Push 部分很感兴趣 它说 有时您可能不仅希望保存模型 还希望保存其所有关系 为此 您可以使用推送方法 保存模型和关系 user gt push 请参阅此处的链接 htt
  • Maven - 在当前项目中找不到前缀“wildfly”的插件

    我正在使用 Wildfly 8 我需要使用 JSR 352 中的 java 批处理处理器 我从以下位置下载了示例https github com javaee samples javaee7 samples https github com
  • 通过 BASH 将空格替换为下划线

    假设我有一个字符串 str 我希望编辑 str 使其中的所有空格都替换为下划线 Example a hello world 我想要的最终输出 echo a to be 你好世界 您可以尝试以下操作 str str
  • 如何在 VScode 中使用带有 R 内核的 Jupyter Notebook?

    现在我可以在 Web 浏览器中使用带有 R kernal 的 jupyter lab 并使用 VS Code 使用 python kernal 编辑 jupyter Notebook 代码 是否可以使用 Jupyter Notebook 模
  • Django 管理加载没有 CSS

    我创建了一个新的 Django 应用程序 我注意到它的管理页面加载时没有 CSS 我设置了STATIC URL和STATIC ROOT在settings py中根据this https stackoverflow com questions
  • SQL Server中模拟Oracle的CONNECT BY PRIOR

    如何在SQL Server 2000 2005 2008中获得Oracle的CONNECT BY PRIOR功能 实现递归查询的 SQL 标准方法 例如实现的通过 IBM DB2 和SQL服务器 http msdn microsoft co
  • 处理 Scalaz6 验证列表

    在 Scalaz6 中是否有一种惯用的方法来处理验证集合 val results Seq Validation A B val exceptions results collect case Failure exception gt exc
  • 更改 ggplot2 中堆叠填充列的顺序

    我想更改堆积条形图的顺序 例如 在mpg我想订购c 4 r f 是改变因素水平的唯一方法吗 library ggplot2 library dplyr s lt ggplot mpg aes fl fill drv geom bar pos
  • PDFsharp 换行符

    我正在尝试换新线路 但如果我使用 n这是行不通的 任何通过向字符串添加一些内容来获得新行的方法 r n 这也不起作用 gfx DrawString Project No n textBoxProjNumber Text fontUnder
  • 为什么 haskell 模式会踩到 s-lower-camel-case 以及它是如何做到的?

    我准备了一个最小的工作示例来检查其他依赖项是否没有干扰这一点 测试函数为 defun test haskell problems interactive insert s lower camel case other string 问题的完
  • django 以每周、每月、每日的方式对查询元素进行排序

    我正在获取人员列表以及他们从同一项目中的 api 进行的测试 我希望用户可以选择查看某个城市中进行的测试数量 并提供三个选项 每日 每周 每月 models py class City models Model city name mode
  • 如何在非静态函数中为静态变量赋值?

    基本上 ajax在 aspx 中 每 1000 毫秒轮询一次从 cs 返回的值WebMethod在 cs 中是static GetData 属性被声明为静态public static int Percent get set 我想要做的是当单
  • NuGet 文件标记中的可选或条件文件夹?

    我想做 MsBuild 所做的事情 设置 nuspec 文件中引用的文件的条件 基本上它看起来像这样
  • C# Winforms 透明控件允许点击

    我有一个问题 与以下内容有点相关 C Winforms 透明控件允许点击 https stackoverflow com questions 855826 c winforms transparent control allowing cl
  • 具有嵌套分组变量的多行轴标签

    我希望两个不同嵌套分组变量的级别显示在图下方的单独行上 而不是显示在图例中 我现在拥有的是这段代码 data lt read table text Group Category Value S1 A 73 S2 A 57 S1 B 7 S2
  • 如何创建像 $RANDOM 这样的 bash 变量

    我对某事感兴趣 每次我echo RANDOM 显示值差异 我猜 RANDOM 很特殊 当我读它时 它可能会调用一个函数 设置一个变量标志并返回 RANDOM 数字 我想创建一个这样的变量 我该怎么做 每个答案都会有帮助 的特殊行为 RAND
  • 如何在样条插值的所有数据点处放置导数零约束?

    scipy 中是否有任何用于样条插值的方法 我可以在每个数据点上对导数使用约束 我发现一个 scipy interpolate PiecewisePolynomial 但 PiecewisePolynomial 类已被弃用 Yes The
  • NgrxStore 和 Angular - 大量使用异步管道或在构造函数中仅订阅一次

    我开始查看 ngrx Store 并看到使用 Angular 异步管道的便利性 同时我不确定大量使用 Angular 异步管道是否是一个不错的选择 我举一个简单的例子 假设在同一个模板中 我需要显示从商店检索的对象 例如人员 的不同属性 一
  • 使用docker-compose扩展服务时如何在卷路径中指定迭代器?

    背景 我正在使用 docker compose 来将 tomcat 服务放入 docker swarm 集群中 但目前我正在努力解决如何处理日志目录的问题 因为我想扩展服务但保留日志目录的唯一性 考虑一下 显然 组成的 docker com