Docker: как игнорировать символическую ссылку при мониторинге томов - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь исправить проблему , связанную с промахом с файлами symlink . Тот факт, что /var/log/nginx, то есть nginx-logs содержит символические ссылки promtail crazy:

promtail_1 | level=warn ts=2020-04-26T17:38:31.235870076Z caller=filetarget.go:334 msg="failed to get file size from tailer, " file=/var/log/nginx/access.log error="invalid argument"
promtail_1 | level=warn ts=2020-04-26T17:38:41.235895944Z caller=filetarget.go:334 msg="failed to get file size from tailer, " file=/var/log/nginx/access.log error="invalid argument"
promtail_1 | level=warn ts=2020-04-26T17:38:51.235921947Z caller=filetarget.go:334 msg="failed to get file size from tailer, " file=/var/log/nginx/access.log error="invalid argument"

Я мог исправить это, изменив, как и где Nginx записывает логи и монтирует только соответствующая папка. Но самым прямым способом было бы игнорировать файлы символических ссылок в опции монтирования . Возможно ли это?

version: '3.7'
services:
  nginx: 
    container_name: ${SERVER_NAME}_nginx
    restart: always
    networks: 
      - monitoring
      - web
    image: nginx:1.17.5-alpine
    entrypoint: /entrypoint.sh
    ports: 
      - 80:80
      - 443:443
    volumes: 
      - ./nginx/site.conf:/etc/nginx/conf.d/site.conf
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/entrypoint.sh:/entrypoint.sh
      - nginx-logs:/var/log/nginx
      - certificates:/etc/letsencrypt/

  promtail: 
    restart: always
    container_name: ${SERVER_NAME}_promtail
    image: grafana/promtail:master-b652f0a
    command: -config.file=/etc/promtail/docker-config.yaml
    volumes: 
      - nginx-logs:/var/log/nginx:ro
      - /var/log:/var/log:ro
      - ./promtail/docker-config.yaml:/etc/promtail/docker-config.yaml:ro
    networks: 
      - monitoring
...