Я пытаюсь понять, как разделить журналы, созданные игрушечным проектом, в том. Журналы создаются внутри контейнера докеров.
Для этого я использую docker-compose версии 3. Пока что я создал том и контейнер с помощью docker compose. Однако, когда я проверяю объем, я не нахожу файлов, исходящих из контейнера. Вот архитектура проекта:
Вот что находится внутри docker-compose.yml:
version: '3'
services:
#Chatbot Service
test_bot:
build: ./test_bot
image: test_bot:1.0
#restart: always
expose:
- "5000"
ports:
- "5000:5000"
volumes:
- test_volume:/app/test_bot
# volume:
# nocopy: true
volumes:
test_volume:
networks:
negusnet:
ipam:
config:
- subnet: 172.192.10.0/16
negus.jitsi:
Вот что находится внутри dockerfile.yml:
FROM python:3.6-slim
#Enviroment variables creation
ENV TEST_HOME=/app/test_bot
# Run updates, install basics and cleanup
# - build-essential: Compile specific dependencies
# - git-core: Checkout git repos
RUN apt-get update -qq \
&& apt-get install -y --no-install-recommends build-essential git-core openssl libssl-dev libffi6 libffi-dev curl nano git wget\
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# use bash always
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
#Define the path of home repository
WORKDIR ${TEST_HOME}
#Copy all files in existing negus_ai repository in docker
COPY . ${TEST_HOME}
RUN python3 ${TEST_HOME}/run_script.py
И напоследок мой test_script:
import logging
import time
logging.basicConfig(filename='Client_logs.log',
level=logging.INFO,
format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
if __name__ == '__main__':
i=0
while(True):
i=i+1
logging.info("yay is is "+str(i))
time.sleep(30)
[EDIT1] Для ясности: я не хочу никаких манипуляций, связанных с попаданием внутрь контейнера или необходимостью вручную копировать журналы из него на хост-машину.
[EDIT2] Я проверяю контейнер, используя идентификатор проверки контейнера докеров. Похоже, что с ним не связаны никакие тома. Параметр монтирования пуст.
Решение проблемы было немного сложным. Все, что мне нужно было сделать, это заменить
RUN python3 ${TEST_HOME}/run_script.py
с участием :
ENTRYPOINT python3 ${TEST_HOME}/run_script.py
Судя по всему, привязка тома к контейнеру не производится, если мы используем строку с RUN.