【问题标题】:Two Independent Docker-Compose-Files And Access To Shared Folder两个独立的 Docker-Compose-Files 和对共享文件夹的访问
【发布时间】:2018-10-05 06:08:15
【问题描述】:

大家好!

我遇到了以下问题,但在文档中没有找到任何有用的建议:

我有两个docker-compose.yml 文件。让我们假设这种情况:

文件 1:

docker-compose-application.yml
  • 包含多种服务和配置。

文件 2:

docker-compose-elasticstack.yml
  • 包含服务 ElasticSearch、Logstash、Kibana 和 FileBeat

这两个文件都可以独立启动并正常工作。通常我只启动应用程序。只有在某些特殊情况下,也需要使用 Elastistack。

问题:

如何为这两个文件之间的日志配置可选的文件共享,以便我可以使用 FileBeat 访问?因此,如果有必要,我会启动这两个文件,如果不只是应用程序的话。

目标:1

docker-compose -f docker-compose-application.yml up
  • 应用程序在没有共享日志文件目录的情况下运行。

目标:2

docker-compose -f docker-compose-application.yml -f docker-compose-elasticstack.yml up
  • 使用共享日志文件目录运行的应用程序 + Elasticstack。

提前非常感谢!

【问题讨论】:

    标签: docker docker-compose elastic-stack


    【解决方案1】:

    您可以使用外部命名卷:

    docker-compose-application.yml:

    services:
      app:
        image: app-image
        volumes:
          - logs:/path/in/container
    
    volumes:
      logs:
        external: true
    

    docker-compose-elasticstack.yml

    services:
      filebeat:
        image: filebeat-image
        volumes:
          - logs:/path/in/container
      ... other services
    
    volumes:
      logs:
        external: true
    

    请注意,此命名卷需要在您 docker-compose up 之前存在。 你可以通过docker volume create logs创建它。

    查看更多信息here

    【讨论】:

    • 它是否有可能不是“实时”共享的?因为不幸的是我看不到日志,只有在重新启动后才能看到。
    • 该卷肯定是“实时”共享的。只要您的应用程序将一行日志刷新到磁盘(日志卷),filebeat 就会看到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多