• 解决docker run中使用 ./ 相对路径挂载文件或目录失败的问题


    docker-compose.yml文件中允许使用'./'相对路径
    例如

    version: '3'
     ...
     volumes:
     - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
     - ./mongo-volume:/data/db
     ...
    

    会将当前路径下的init-mongo.js文件挂载到容器中的/docker-entrypoint-initdb.d/init-mongo.js,并且设置为只读方式;

    会将当前路径下的mongo-volume目录挂载到容器中/data/db,如果不存在mongo-volume,则会自动创建该目录

    但如果是docker run的方式就不能像上面一样用相对路径了

    >>> docker run -d --restart always -p 27017-27019:27017-27019 -e MONGO_INITDB_DATABASE=job -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=root -v $PWD/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro -v ./mongo-volume:/data/db --name my-mongo-container mongo
    docker: Error response from daemon: create ./init-mongo.js: "./init-mongo.js" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
    See 'docker run --help'.
    

    需要用到$PWD替代点号'.'

    >>> docker run -d --restart always -p 27017-27019:27017-27019 -e MONGO_INITDB_DATABASE=job -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=root -v $PWD/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro -v $PWD/mongo-volume:/data/db --name my-mongo-container mongo
    3081e25a20fa8b2e95850897b3b32b08da298f73d7e458119fa3f2c85b45f020
    
  • 相关阅读:
    .NET 异步详解
    spring batch简介
    Nginx 配置文件介绍
    局域网内组播
    qt自定义信号函数的那些坑
    传输文件到远程服务器
    vim复制指定行
    腾讯云获取公网ip
    ifconfig添加或删除ip
    程序中tar压缩文件
  • 原文地址:https://www.cnblogs.com/faberbeta/p/16301565.html
Copyright © 2020-2023  润新知