我创建了一个带有一些自定义依赖项编译的开发容器。经过几个小时的构建,是时候运行我的第一个测试了。我的测试需要将主机磁盘上的文件(预训练模型和一些数据)加载到单独的文件夹中。使用 docker compose 或 docker 命令行等工具运行,我可以通过指定卷与容器共享主机文件。开发容器对代码文件夹执行相同的操作,但是如何为开发容器指定额外的卷。
问问题
21 次
1 回答
1
您可以为此使用Multi Compose 文件:
假设您有一个docker-compose.yml
文件,其中包含所有环境(dev、prod 等)的基本配置:
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
注意:请务必检查在此处覆盖文件时如何处理属性,尤其是在您的情况下是卷。
编辑:现在要在您的 docker-compose.yml 中使用多个文件,请devcontainer.json
使用dockerComposeFile属性。在这里,您将删除“build”属性并提供 docker-compose 文件列表:
...
"dockerComposeFile": [
"path/to/docker-compose.yml",
"path/to/docker-compose.dev.yml"
],
"service": "web",
"shutdownAction": "stopCompose",
...
/!\ 请注意,文件的顺序很重要,因为后面的文件会覆盖前面的文件。
于 2022-01-25T18:09:32.990 回答