如何使用 docker compose 创建外部卷?
How do I create an external volume using docker compose?
基于这个 Node-RED tutorial,我正在尝试在 docker 机器之外安装一个带有 Node-RED 文件的外部卷。我正在使用以下 docker-compose
文件:
version: "3.7"
services:
node-red:
image: nodered/node-red:latest
environment:
- TZ=Europe/Amsterdam
ports:
- "2000:1880"
networks:
- node-red-net
volumes:
- node-red-data:/home/user/node-red1
volumes:
node-red-data:
networks:
node-red-net:
然而,尽管这个文件在我 运行 docker-compose up
时工作正常,但该卷只存在于 docker 机器中。我尝试在 volumes
中添加 external: true
行,但出现以下错误:
ERROR: In file './docker-compose.yml', volume 'external' must be a mapping not a boolean.
我错过了什么?如何使用 docker-compose 文件挂载外部卷?
我最终找到了一个与 this answer 相关的问题。那里有多个答案对我不起作用(也没有公认的答案)。有效的语法是:
node-red-data:
driver: local
driver_opts:
o: bind
type: none
device: /path/external/folder
所以在 运行 docker-compose up
之后有效的最终 dockerfile
是:
version: "3.7"
services:
node-red:
image: nodered/node-red:latest
environment:
- TZ=Europe/Amsterdam
ports:
- "2000:1880"
networks:
- node-red-net
volumes:
- node-red-data:/data
container_name: node-red
volumes:
node-red-data:
driver: local
driver_opts:
o: bind
type: none
device: "/home/user/node-red1"
networks:
node-red-net:
更新
如果我们不介意为卷取一个随机名称,以下解决方案也可以正常工作:
version: "3.7"
services:
node-red:
image: nodered/node-red:latest
environment:
- TZ=Europe/Amsterdam
ports:
- "2000:1880"
volumes:
- /home/user/node-red1:/data
container_name: node-red
基于这个 Node-RED tutorial,我正在尝试在 docker 机器之外安装一个带有 Node-RED 文件的外部卷。我正在使用以下 docker-compose
文件:
version: "3.7"
services:
node-red:
image: nodered/node-red:latest
environment:
- TZ=Europe/Amsterdam
ports:
- "2000:1880"
networks:
- node-red-net
volumes:
- node-red-data:/home/user/node-red1
volumes:
node-red-data:
networks:
node-red-net:
然而,尽管这个文件在我 运行 docker-compose up
时工作正常,但该卷只存在于 docker 机器中。我尝试在 volumes
中添加 external: true
行,但出现以下错误:
ERROR: In file './docker-compose.yml', volume 'external' must be a mapping not a boolean.
我错过了什么?如何使用 docker-compose 文件挂载外部卷?
我最终找到了一个与 this answer 相关的问题。那里有多个答案对我不起作用(也没有公认的答案)。有效的语法是:
node-red-data:
driver: local
driver_opts:
o: bind
type: none
device: /path/external/folder
所以在 运行 docker-compose up
之后有效的最终 dockerfile
是:
version: "3.7"
services:
node-red:
image: nodered/node-red:latest
environment:
- TZ=Europe/Amsterdam
ports:
- "2000:1880"
networks:
- node-red-net
volumes:
- node-red-data:/data
container_name: node-red
volumes:
node-red-data:
driver: local
driver_opts:
o: bind
type: none
device: "/home/user/node-red1"
networks:
node-red-net:
更新
如果我们不介意为卷取一个随机名称,以下解决方案也可以正常工作:
version: "3.7"
services:
node-red:
image: nodered/node-red:latest
environment:
- TZ=Europe/Amsterdam
ports:
- "2000:1880"
volumes:
- /home/user/node-red1:/data
container_name: node-red