将应用程序日志存储在docker容器文件系统中

4dbbbstv  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(451)

我正在使用docker compose在docker容器上运行elastalert服务器。这是docker-compose.yml文件

version: "3.3"
services:
  elastalert:
    container_name: elastalert
    build:
      context: .
      dockerfile: Dockerfiles/Dockerfile-elastalert
    image: elastalert:3.0.0-beta.0
    network_mode: host
    ports:
      - 3030:3030
      - 3333:3333
    restart: always
    volumes:
      - ./elastalert/config/elastalert.yml:/opt/elastalert/config.yaml
      - ./elastalert/config/elastalert-test.yml:/opt/elastalert/config-test.yaml
      - ./elastalert/config/config.json:/opt/elastalert-server/config/config.json
      - ./elastalert/rules:/opt/elastalert/rules
      - ./elastalert/rule_templates:/opt/elastalert/rule_templates
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:3030 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3

elastalert的docker文件是:

FROM bitsensor/elastalert:3.0.0-beta.0

USER root

RUN apk update && \
    apk add bash curl && \
    rm -rf /var/cache/apk/*

ADD elastalert/bin/elastalert-start.sh /usr/local/bin/
ADD elastalert/bin/elastic_search_status.sh /usr/local/bin/

RUN chmod +x /usr/local/bin/elastalert-start.sh 
RUN chmod +x /usr/local/bin/elastic_search_status.sh

USER node

ENTRYPOINT ["/usr/local/bin/elastalert-start.sh"]

运行elastalert容器时,我可以使用命令:docker compose logs-f查看终端上的日志,但这些日志不会存储在容器(容器文件系统)中的任何位置。
有没有办法将这些日志存储在elastalert容器中?
类似于elastalert容器文件系统中的/var/log/elastalert.log。

o0lyfsai

o0lyfsai1#

为什么要将日志存储在容器中?容器本质上是短暂的,所以它们来来去去去,除非你把它定义为一个体积。默认情况下,您可以访问主机上此路径上的日志:

/var/lib/docker/containers/[container-id]/[container-id]-json.log

相关问题