如何从Docker容器写入主机安装的文件夹

时间:2020-04-04 15:25:56

标签: python docker docker-compose

我有一个作为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。我知道我想念什么。我就是不知道!

这是我的Dockerfile,以防万一:

FROM python:3.6

WORKDIR /app

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

1 个答案:

答案 0 :(得分:2)

您必须像这样映射卷:

- ./backups:/app/backups

因为您的工作目录为/app

这里./backups/another-folder使用的是相对路径,但您位于/app内部,因此完整路径将为/app/backups/another-folder