如何在 docker-compose on windows/virtualbox 设置中将 ./project_dir 作为卷挂载

how to mount a ./project_dir as a volume in docker-compose on windows/virtualbox setup

Docker-compose.yml 在 mac machine 上运行良好,但我们的开发人员同时使用 mac 和 windows 计算机(windows 由于其他虚拟框要求,无法使用 hyper-v。

可以通过全局路径通过VM界面共享文件夹/volume_data_dir

然而,这会导致环境之间出现问题,因为 mac 和生产使用相对路径 ./volume_data_dir 作为挂载点。

我也试过将文件夹安装为 /home/docker/volume_data_dir(/home/docker 是 virtualbox 中 docker 的主文件夹)但没有成功。

因此我的问题是:在 vmware 中,docker-compose、运行 共享卷的目录是什么,以便能够使用相对路径挂载文件夹 ./volume_data_dir?

有问题的docker-compose.yml:

version: '3'
services:
django:
  container_name: server
  restart: always
  depends_on:
    - db
  build:
    context: .
    dockerfile: dockerfile
  image: server
  stdin_open: true
  tty: true
  volumes:
    - ./data:/var/www/data
  ports:
    - "8000:8000"

我已经阅读了 GreensterRox () 的非常全面的回答,但不幸的是,它没有帮助

我设法想出的一种 hacky 方法是使用 docker 环境文件中定义的环境变量来传递挂载路径:

version: '3'
services:
    django:
      container_name: server
      restart: always
      depends_on:
         - db
    build:
        context: .
        dockerfile: dockerfile
    image: server
    stdin_open: true
    tty: true
    volumes:
        - $VOLUME_MOUNT_PATH:/var/www/data
    ports:
        - "8000:8000"

如果谁有更好的解决方案,请告诉我!

一种可能的解决方案是:

  1. 我们必须配置 Oracle VirtualBox 才能访问您的文件夹:转到“设置”、“共享文件夹”,将您的文件夹“data”添加到列表中。

  2. 在 .yml 代码中,我们必须在您的文件夹之前使用“//”:

    volumes:  
        - //p_data:/var/www/data

其中“p_data”是您在 VirtualBox 共享文件夹菜单中定义的初始文件夹“data”的假名。

此解决方案摘自 Charles Stover 的文章:https://medium.com/@Charles_Stover/fixing-volumes-in-docker-toolbox-4ad5ace0e572