热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Docker构成如何将路径从一个容器挂载到另一个容器?

如何解决《Docker构成如何将路径从一个容器挂载到另一个容器?》经验,为你挑选了1个好方法。



1> Dan Lowe..:

您要做的是使用卷,然后将该卷装入您希望它出现的任何容器中.

完全在Docker中

你可以在Docker中完全做到这一点.

这是一个例子(精简版 - 当然,你的真实文件会比这更多).

version: '3'
services:
  nginx:
    volumes:
      - asset-volume:/var/lib/assets
  asset:
    volumes:
      - asset-volume:/var/lib/assets

volumes:
  asset-volume:

底部是一个定义的单个卷,名为"asset-volume".

然后在每个服务中,告诉Docker将该卷安装在某个路径上.我在容器内部显示了示例路径,只需将它们调整为您希望它们在容器中的任何路径.

该卷是不属于任何特定容器的独立实体.它只是安装在每个中,并且是共享的.如果一个容器修改了内容,那么它们都会看到更改.

请注意,如果您只希望有一个可以进行更改,则可以通过添加:ro到卷字符串的末尾,始终将卷安装为某些服务中的只读卷.

services:
  servicename:
    volumes:
      - asset-volume:/var/lib/assets:ro

使用主机目录

或者,您可以使用主机上的目录并将其挂载到容器中.这样做的好处是,您可以使用Docker之外的工具直接处理文件(例如GUI文本编辑器和其他工具).

它是相同的,除了你没有在Docker中定义一个卷,而是安装外部目录.

version: '3'
services:
  nginx:
    volumes:
      - ./assets:/var/lib/assets
  asset:
    volumes:
      - ./assets:/var/lib/assets

在此示例中,使用相对路径将本地目录"assets"安装到两个容器中./assets.

根据环境使用两者

您还可以为不同的开发和生产环境进行设置.将所有内容放在docker-compose.yml中,卷装入除外.然后再制作两个文件.

泊坞窗,compose.dev.yml

泊坞窗,compose.prod.yml

在这些文件中只放置最小配置来定义卷装入.我们将它与docker-compose.yml混合以获得最终配置.

然后使用它.它将使用docker-compose.yml中的配置,并使用第二个文件中的任何内容作为覆盖或补充配置.

docker-compose -f docker-compose.yml \
    -f docker-compose.dev.yml \
    up -d

而对于生产,只需使用prod文件而不是dev文件.

这里的想法是将大部分配置保留在docker-compose.yml中,并且只保留备用文件中的最小差异集.

例:

泊坞窗,compose.prod.yml

version: '3'
services:
  nginx:
    volumes:
      - asset-volume:/var/lib/assets

泊坞窗,compose.dev.yml

version: '3'
services:
  nginx:
    volumes:
      - ./assets:/var/lib/assets


推荐阅读
author-avatar
天边的云YEAH_988
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有