windows - 无法在 Windows 上将持久文件夹添加到 bitnami/mongodb

标签 windows mongodb docker docker-compose hyper-v

我认为这可能与文件系统不兼容(nfts/ext*)有关

如何在不退出容器的情况下组合我的容器并保留数据库?

我正在使用 bitnami-mongodb-image

错误:

Error executing 'postInstallation': EACCES: permission denied, mkdir '/bitnami/mongodb'
mongodb_1 exited with code 1

完整输出:

Recreating mongodb_1 ... done
Starting node_1      ... done
Attaching to node_1, mongodb_1
mongodb_1  |
mongodb_1  | Welcome to the Bitnami mongodb container
mongodb_1  | Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-mongodb
mongodb_1  | Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-mongodb/issues
mongodb_1  |
mongodb_1  | nami    INFO  Initializing mongodb
mongodb_1  | mongodb INFO  ==> Deploying MongoDB from scratch...
mongodb_1  | Error executing 'postInstallation': EACCES: permission denied, mkdir '/bitnami/mongodb'
mongodb_1 exited with code 1

Docker 版本:

Docker version 18.06.0-ce, build 0ffa825

Windows 版本:

Microsoft Windows 10 Pro
Version 10.0.17134 Build 17134

到目前为止,这是我的 docker-compose.yml:

version: "2"
services:
  node:
    image: "node:alpine"
    user: "node"
    working_dir: /home/node/app
    environment:
    - NODE_ENV=development
    volumes:
    - ./:/home/node/app
    ports:
    - "8888:8888"
    command: "tail -f /dev/null"
  mongodb:
    image: 'bitnami/mongodb'
    ports:
    - "27017:27017"
    volumes:
    - "./data/db:/bitnami"
    - "./conf/mongo:/opt/bitnami/mongodb/conf"

最佳答案

我不使用 Windows,但您绝对可以尝试使用命名卷,看看权限问题是否消失

version: "2"
services:
  node:
    image: "node:alpine"
    user: "node"
    working_dir: /home/node/app
    environment:
    - NODE_ENV=development
    volumes:
    - ./:/home/node/app
    ports:
    - "8888:8888"
    command: "tail -f /dev/null"
  mongodb:
    image: 'bitnami/mongodb'
    ports:
    - "27017:27017"
    volumes:
    - mongodata:/bitnami:rw
    - "./conf/mongo:/opt/bitnami/mongodb/conf"
volumes:
  mongodata:

我想强调的是,与您正在使用的主机卷相比,这是一个命名卷。这是生产环境的最佳选择,您需要注意 docker 将为您管理和存储文件,因此您不会在项目文件夹中看到这些文件。

如果您仍想使用主机卷(即写入您在主机上的项目子文件夹中指定的位置的卷),您需要应用权限修复,这是 mariadb 的示例,但它适用于 mongo也是

https://github.com/bitnami/bitnami-docker-mariadb/issues/136#issuecomment-354644226

简而言之,您需要知道主机上文件系统的用户是什么(在示例中 1001 是我主机上登录用户的用户 ID),然后将该文件夹 chown 给该用户,以便用户在文件夹和您的主机系统上将相同。

一个完整的例子:

version: "2"
services:
  fix-mongodb-permissions:
    image: 'bitnami/mongodb:latest'
    user: root
    command: chown -R 1001:1001 /bitnami
    volumes:
      - "./data:/bitnami"
  mongodb:
    image: 'bitnami/mongodb'
    ports:
      - "27017:27017"
    volumes:
      - ./data:/bitnami:rw
    depends_on:
      - fix-mongodb-permissions

希望对你有帮助

关于windows - 无法在 Windows 上将持久文件夹添加到 bitnami/mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51891662/

相关文章:

c++ - 从 windows 可执行文件复制机器代码并在 linux 上运行

windows - Windows 上的 Java 8 64 位,带有符合 FIPS 140 的 NSS

java - Java中如何做Mongodb聚合算术运算符?

mongodb聚合嵌套嵌套数组

docker - COPY dockerfile中没有这样的文件或目录

docker - 在 docker 容器中运行 Jenkins 有什么好处

java - Windows 上的 "lo"接口(interface)等效项是什么

在 ALREADY RUNNING CMD 窗口中运行 Java 命令

javascript - 如何使用 mongoose 打开和关闭 TTL 索引?

docker - Kubernetes 的私有(private)注册表