在 Windows 10 上使用 docker compose 挂载网络驱动器

Jam*_*mac 9 docker docker-compose

我最近使用下面的示例 docker-compose.yml 文件在 Windows 10 的各个项目中成功安装了卷。对于今天的一个新项目,我需要从 Z:/ 驱动器(一个网络安装驱动器,当\\IP.IP.IP.IP\public\data (Z:)我导航到 Windows 文件资源管理器中的该区域时出现)安装一个文件夹。

当我编辑卷以指向 Z: 上的位置时(例如在下面的第二个 docker-compose.yml 中),当我通过 CLI 连接到容器时,卷未正确安装并且是空文件夹。

任何关于正确安装 Z: 驱动器文件夹的建议都会很棒,谢谢。

工作 docker-compose.yml 文件:

version: '3.1'

services:
  db:
    image: mysql:8.0.25
    container_name: db
    restart: always
    secrets:
      - mysql_root
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root
      MYSQL_DATABASE: donuts
      TZ: "Australia/NSW"
    volumes:
      - mysql-data:/var/lib/mysql
      - ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql
    network_mode: "host"
  
  voyager_donuts:
    container_name: voyager_donuts
    build:
      context: .
      dockerfile: Dockerfile
    image: voyager_donuts
    network_mode: "host"
    environment:
      TZ: "Australia/NSW"
    volumes:
      - c:/Users/MYUSERNAME/data/DonutsCalibration:/voyager_calibration
      - c:/Users/MYUSERNAME/data/DonutsLog:/voyager_log
      - c:/Users/MYUSERNAME/data:/voyager_data
      - c:/Users/MYUSERNAME/data/DonutsReference:/voyager_reference

volumes:
  mysql-data:

secrets:
  mysql_root:
    file: ./secrets/mysql_root
Run Code Online (Sandbox Code Playgroud)

损坏的卷 docker-compose.yml 文件:

version: '3.1'

services:
  db:
    image: mysql:8.0.25
    container_name: db
    restart: always
    secrets:
      - mysql_root
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root
      MYSQL_DATABASE: donuts
      TZ: "Australia/NSW"
    volumes:
      - mysql-data:/var/lib/mysql
      - ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql
    network_mode: "host"
  
  voyager_donuts:
    container_name: voyager_donuts
    build:
      context: .
      dockerfile: Dockerfile
    image: voyager_donuts
    network_mode: "host"
    environment:
      TZ: "Australia/NSW"
    volumes:
      - z:/RAW/DonutsCalibration:/voyager_calibration
      - z:/RAW/DonutsLog:/voyager_log
      - z:/RAW:/voyager_data
      - z:/RAW/DonutsReference:/voyager_reference

volumes:
  mysql-data:

secrets:
  mysql_root:
    file: ./secrets/mysql_root
Run Code Online (Sandbox Code Playgroud)

Seb*_*Bln 9

根据此论坛帖子,您必须使用类似的方法才能挂载网络共享:

volumes:
  foldermix:
    driver_opts:
      type: cifs
      o: username={smbuser},password={smbpass},uid={UID for mount},gid={gid for mount},vers=3.0
      device: //Share1/FolderMix
Run Code Online (Sandbox Code Playgroud)

另请参阅Samba/CIFS 卷的 docker 文档

当然,如果您确实需要间接挂载网络驱动器而不是网络共享,即因为驱动器可以挂载到不同的共享,或者您不想将凭据放入 Docker-Compose 文件中,则这无法解决问题。