代码之家  ›  专栏  ›  技术社区  ›  Tom M

无法将永久文件夹添加到Windows上的Bitnami/MongoDB

  •  1
  • Tom M  · 技术社区  · 7 年前

    我认为这可能与文件系统不兼容(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"
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Bizmate    7 年前

    我不使用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),然后将该文件夹发送给该用户,以便该用户在文件夹和主机系统上是相同的。

    一个完整的例子:

    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
    

    我希望这有帮助

    推荐文章