作者:天边的云YEAH_988 | 来源:互联网 | 2023-02-05 20:34
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