【发布时间】:2020-01-16 22:29:59
【问题描述】:
我正在运行 docker compose 命令来在 docker 中运行应用程序。但是,yml 中定义的卷是空的。如果我挂载一个文件,它就可以工作。但是,当我从 windows 挂载目录时,我可以看到该目录,但它是空的。
这是我的 docker-compose 命令。
docker-compose -f docker-compose.dev.yml -f docker-compose.test.yml -f docker-compose.test.local.yml run --rm app /bin/sh
下面是我的 yml 文件的内容:
version: "3"
services:
app:
environment:
- NODE_ENV=test
- TEST_DB_HOSTNAME=database
- DB_HOSTNAME=database
- DB_MIGRATE_ENV=test-docker
volumes:
- .jshintignore:/home/test_app/src/.jshintignore
- .jshintrc:/home/test_app/src/.jshintrc
- ./nuke-rebuild-test-db.js:/home/gofar/src/nuke-rebuild-test-db.js
- ./test_folder:/home/test_app/src/test_folder
- ./database:/home/test_app/src/database
- ./server:/home/test_app/src/server
- ./common:/home/test_app/src/common
- ./coverage:/home/test_app/src/coverage
从上面,nuke-rebuild-test-db.js 文件被复制到容器中。我也可以看到 test_folder。但是,如果我查看文件夹内部,它是空的。
以下是我为使 docker 在我有 docker 工具箱的 Windows 10 Home 系统中工作所做的工作。
以下是将我的 Windows 机器中的 Ubuntu WSL 与 Docker Toolbox 连接起来的配置。
为了让我的根目录与 linux 兼容,我在 /etc/wsl.conf 字段中添加了以下内容
[automount]
root = /
options = "metadata"
即使正在装载单个文件,我也已将我的应用程序文件夹添加到 Oracle VM Virtual Box 的共享文件夹列表中。
谢谢。
【问题讨论】:
-
1.您是否尝试过使用 Windows 版本的 docker-compose.exe?结果一样吗? 2. 目录在哪里?例如 /test_folder 在 c:\Users\ ..... ?
-
是的。项目文件夹位于 c:/Users 目录中。我的 Windows 机器中确实有 docker-compose。但是,由于我使用的是 Ubuntu WSL,我认为它使用了自己的 docker-compose。
C:\Users\bikash>docker-compose --version docker-compose version 1.23.2, build 1110ad01 -
好吧,如果你还没有在 WSL 中安装 docker-compose for Linux,你可能正在使用 WSL 的 Windows 版本。如果您使用的是 Linux,我不知道发生了什么。
-
docker-compose 安装在我的 ubuntu wsl 中。我可以看到 Windows 的 docker 工具箱中的 docker-compose 和我的 ubuntu wsl 的 docker-compose 也不同。 docker 工具箱中的 docker-compose
bikash@DESKTOP-VGO9UIB MINGW64 /c/Program Files/Docker Toolbox $ docker-compose --version docker-compose version 1.23.2, build 1110ad01ubuntu wsl 中的 docker-compose ``` /c docker-compose --version docker-compose 版本 1.22.0,构建 f46880fe```
标签: docker ubuntu docker-compose windows-subsystem-for-linux docker-toolbox