在开发容器中挂载主机卷
Mounting host volumes in development container
我创建了一个带有一些自定义依赖编译的开发容器。经过几个小时的构建,是时候 运行 我的第一次测试了。我的测试需要在单独的文件夹中加载主机磁盘上的文件(预训练模型和一些数据)。 运行 工具,如 docker compose 或 docker 命令行 我可以通过指定卷与容器共享主机文件。开发容器与代码文件夹的作用相同,但我如何为开发容器指定额外的卷。
你可以使用 Multi Compose files:
假设您有一个 docker-compose.yml
文件,其中包含所有环境(开发、生产等)的基本配置:
web:
image: example/my_web_app:latest
ports:
- "1234:1234"
然后您还有其他环境文件,例如 docker-compose.env.yml
,您可以在其中添加或覆盖基于环境的配置。
对于您的示例,您将有一个 docker-compose.dev.yml
,您可以在其中添加开发容器所需的额外卷:
web:
volumes:
- 'path/to/host/folder:/path/to/container/folder'
在开发过程中,您将启动堆栈:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
注意:在您的情况下,请务必检查在覆盖文件 here, and especially volumes 时如何处理属性。
编辑:现在要在 devcontainer.json
中使用多个 docker-compose.yml 文件,请使用 dockerComposeFile 属性。在这里,您将删除“构建”属性 并提供 docker-compose 个文件的列表:
...
"dockerComposeFile": [
"path/to/docker-compose.yml",
"path/to/docker-compose.dev.yml"
],
"service": "web",
"shutdownAction": "stopCompose",
...
/!\ 请注意,文件的顺序很重要,因为后面的文件会覆盖前面的文件。
我创建了一个带有一些自定义依赖编译的开发容器。经过几个小时的构建,是时候 运行 我的第一次测试了。我的测试需要在单独的文件夹中加载主机磁盘上的文件(预训练模型和一些数据)。 运行 工具,如 docker compose 或 docker 命令行 我可以通过指定卷与容器共享主机文件。开发容器与代码文件夹的作用相同,但我如何为开发容器指定额外的卷。
你可以使用 Multi Compose files:
假设您有一个 docker-compose.yml
文件,其中包含所有环境(开发、生产等)的基本配置:
web:
image: example/my_web_app:latest
ports:
- "1234:1234"
然后您还有其他环境文件,例如 docker-compose.env.yml
,您可以在其中添加或覆盖基于环境的配置。
对于您的示例,您将有一个 docker-compose.dev.yml
,您可以在其中添加开发容器所需的额外卷:
web:
volumes:
- 'path/to/host/folder:/path/to/container/folder'
在开发过程中,您将启动堆栈:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
注意:在您的情况下,请务必检查在覆盖文件 here, and especially volumes 时如何处理属性。
编辑:现在要在 devcontainer.json
中使用多个 docker-compose.yml 文件,请使用 dockerComposeFile 属性。在这里,您将删除“构建”属性 并提供 docker-compose 个文件的列表:
...
"dockerComposeFile": [
"path/to/docker-compose.yml",
"path/to/docker-compose.dev.yml"
],
"service": "web",
"shutdownAction": "stopCompose",
...
/!\ 请注意,文件的顺序很重要,因为后面的文件会覆盖前面的文件。