Доступ к журналам за пределами док-контейнеров - PullRequest
2 голосов
/ 06 июня 2019

Я запускаю алгоритм с помощью команды «docker-compose» на облачном сервере.Одна из служб (productionbackend) записывает журналы как часть своего выполнения в месте внутри своего контейнера (./logs/Log_ .txt).

Я знаю, что могу использовать «журналы докера»команда для проверки журналов при запуске службы, но как только она остановлена ​​с помощью 'docker-compose down', журналы теряются навсегда (так как контейнер уничтожается).

Так что я думаю, что я хотел бы «смонтировать»том в мой файл компоновки Docker, и перенаправьте вывод этого файла log.txt в каталог ~ вне контейнера.Вот как выглядит мое дерево каталогов:

Я безуспешно пробовал все виды комбинаций в файле компоновки Docker.

Например, добавление нижеприведенного сообщения не удалось.

volumes:
- type: volume  # Also tried `bind` type and other syntaxes
- ./logs:/productionbackend/logs


.
├── docker-compose.yaml #THIS IS THE DOCKER-COMPOSE FILE STARTING MY SERVICES
├── productionfrontend
│   ├── Dockerfile
│   ├── app
│   │   ├── database.py
│   │   ├── main.py
│   │   └── requirements.txt
│   └── docker-compose.yaml
└── productionbackend
    ├── Dockerfile
    ├── backend.py
    ├── logs
    │   ├── Log_03_Jun_14.18.19_GMT.txt
    ├── requirements.txt
    ├── settings
    │   └── somefile.py
     ........

Спасибо.

1 Ответ

3 голосов
/ 06 июня 2019

Для следующего:

volumes:
- type: volume  # Also tried `bind` type and other syntaxes
- ./logs:/productionbackend/logs

Я не знаю, если это ваша опечатка или другие, но эта грамматика кажется странной, см. официальная грамматика

Далее я приведу минимальный пример, который мог бы работать для вашей справки:

docker-compose.yaml:

version: '3'
services:
  backend:
    image: alpine
    container_name: my_try
    volumes:
      - ./log_on_host:/productionbackend/logs
    command: sh -c 'echo "hi" > /productionbackend/logs/my_log.txt'

И затем история выполнения:

shubuntu1@shubuntu1:~/abc$ ls
docker-compose.yaml
shubuntu1@shubuntu1:~/abc$ docker-compose up -d
Creating network "abc_default" with the default driver
Creating my_try ... done
shubuntu1@shubuntu1:~/abc$ docker-compose down
Removing my_try ... done
Removing network abc_default
shubuntu1@shubuntu1:~/abc$ ls
docker-compose.yaml  log_on_host
shubuntu1@shubuntu1:~/abc$ cat log_on_host/my_log.txt
hi

Сверху вы можете видеть, что хотя контейнер my_try был уничтожен, мы по-прежнему видим журнал my_log.txt, который содержит содержимое hi на хосте.Вам нужно изменить свой аналогично приведенному выше минимальному примеру, только к вашему сведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...