docker-compose - Docker-compose.yml Volummes: 和 -mount 命令结果不一样
问题描述
我一直在寻找这个问题一个多星期没有解决方案。我正在尝试从 docker-compose.yml 挂载一个卷这是我的目录结构:
-docker-compose.yml
-api
-dockerfile
-frontend
-dockerfile
-models
我想要在 api 服务和前端服务之间共享模型。首先,我尝试将模型放入容器中。在容器的 /usr/src/models 目录及其所有内容中。这个命令很好用
docker run -it --mount src="$(pwd)/models",target=/usr/src/models,type=bind -p 3000:3000 website_api
需要注意的重要一点是,当我在 VS 代码中检查 docker 容器时,它会产生这个:website_api.json:
"Mounts": [
{
"Type": "bind",
"Source": "/home/kevin/source/repos/cropwatch/website/models",
"Target": "/usr/src/models"
}
],
这是 json 文件的内部,还有很多其他的东西。但是,当我运行 docker-compose 时,设置如下:
version: "3.8"
services:
api:
container_name: api
restart: always
build:
context: ./
dockerfile: ./api/dockerfile
ports:
- "3000:3000"
- "3001:3001"
volumes:
- type: bind
source: "./models"
target: "/usr/src/models"
json 文件中的挂载路径如下所示:
"Mounts": [],
并且我容器中的 /usr/src/models 目录是空的...
因此,这两件事与我之前似乎相信的不同。
关于我在 docker-compose.yml 文件中做错了什么的任何想法?
解决方案
这应该做的工作:
tree
.
├── api
│ └── dockerfile
├── docker-compose.yml
└── models
└── someFile
cat docker-compose.yml
version: "3.8"
services:
api:
container_name: api
restart: always
build:
context: ./
dockerfile: ./api/dockerfile
volumes:
- ./models:/usr/src/models
docker-compose up -d
docker exec 5ea0c49003f6 sh -c "ls -la /usr/src/models"
total 8
drwxr-xr-x 2 1000 1000 4096 Aug 3 20:09 .
drwxr-xr-x 1 root root 4096 Aug 3 20:15 ..
-rw-r--r-- 1 1000 1000 0 Aug 3 20:09 someFile
docker container inspect --format '{{.Mounts}}' 5ea0c49003f6
[{bind /home/neo/so-playground/mounts-63236400/models /usr/src/models rw true rprivate}]
推荐阅读
- sql-server - SQL 查询行为不当。
- php - 从 POST 的图像数组中上传 1 个特定索引而不循环通过 $_FILES - 在 CodeIgniter 中
- java - RTC 收集器 API 未获取最新记录
- c# - OData WebApi V4 .net - 自定义序列化
- r - 计算值反转率/计数具有特定值差异的行数
- entity-framework-core - EF Core 2.1 浮点数转换问题
- assembly - 在 invokeNative asm 函数中将参数传递到哪里?
- java - 根据对象参数和用户输入过滤 ArrayList
- ios - 复制粘贴后如何将光标放在格式化数字的末尾?
- sql - 按帮助分组 - Oracle SQL