Как записать в папку, смонтированную на хосте из docker контейнера - PullRequest
1 голос
/ 04 апреля 2020

У меня есть небольшой проект, работающий как контейнер docker для резервного копирования моих данных MongoDB. Предполагается, что резервные данные сохраняются на хост-компьютере docker. Поэтому я использую volume в файле docker-compose:

version: '3'

services:
  mongo_backup:
    container_name: mongo_backup
    build: .
    command: python3 app.py
    volumes:
      - ./backups:/backups

Когда я запускаю этот код, в папке проекта на хост-компьютере создается папка с именем backups.

if not os.path.exists('./backups/'):
    os.mkdir('./backups/')

Но когда я пытаюсь создать другую папку внутри папки ./backups/, ничего не происходит без ошибок.

if not os.path.exists('./backups/another-folder'):
    os.mkdir('./backups/another-folder')

Вторая папка создается внутри контейнера docker, но внутри ничего не происходит хост-машина.

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

sudo chmod -R 777 address/to/project/

Но это не помогло.

Мне нужно создать разные папки в первой папке, поэтому я не могу добавить их все как volume s. Я знаю, что что-то упустил. Я просто не знаю что!

Это мой Dockerfile на всякий случай:

FROM python:3.6

WORKDIR /app

COPY src/requirements.txt /app
RUN pip3 install -r /app/requirements.txt
COPY ./src /app

1 Ответ

2 голосов
/ 04 апреля 2020

вы должны отобразить ваши тома следующим образом:

- ./backups:/app/backups

, потому что ваш рабочий каталог /app

здесь ./backups/another-folder вы используете относительный путь, но вы внутри /app, поэтому ваш полный путь будет /app/backups/another-folder

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