docker-compose:如何将文件从容器映射到卷
docker-compose: how to map a file from a container into a volume
我正在尝试将文件从一个容器共享到另一个容器。一个重要的细节是(机器 运行)我的 docker 主机确实 没有 对文件有明确的访问权限:它拉取一个 git 回购和不知道 repo 的内部文件组织(docker-compose 文件除外)。因此,标准映射 <host-path>:<container-path>
的方法不适用;例如这对我来说不可能:
下面是 docker-compose 文件,为提高可读性而对其进行了剥离。假设 service_1
有文件 /app/awesome.txt
。然后我们想将它作为 /opt/awesome.txt
.
挂载到 service_2
中
# docker-compose.yml
version: '3'
services:
service_1:
volumes:
- shared_vol:/public
# how to make service_1 map 'awesome.txt' into /public ?
service_2:
volumes:
- shared_vol/awesome.txt:/opt/awesome.txt
volumes:
shared_vol:
我有但不喜欢的工作解决方案,
- 运行
service_1
中的 script/cmd,将文件复制到共享卷:导致竞争条件,因为 service_2
在启动时需要文件
- 引入第三项服务,其他两项服务
depends_on
,除了将文件放入共享卷外什么都不做
非常感谢任何帮助、提示或指导!
你能做这样的事情吗
version: '3.5'
volumes:
xxx:
services:
service_1:
...
volumes:
- xxx:/app
service_2:
...
volumes:
- xxx:/opt
我正在尝试将文件从一个容器共享到另一个容器。一个重要的细节是(机器 运行)我的 docker 主机确实 没有 对文件有明确的访问权限:它拉取一个 git 回购和不知道 repo 的内部文件组织(docker-compose 文件除外)。因此,标准映射 <host-path>:<container-path>
的方法不适用;例如这对我来说不可能:
下面是 docker-compose 文件,为提高可读性而对其进行了剥离。假设 service_1
有文件 /app/awesome.txt
。然后我们想将它作为 /opt/awesome.txt
.
service_2
中
# docker-compose.yml
version: '3'
services:
service_1:
volumes:
- shared_vol:/public
# how to make service_1 map 'awesome.txt' into /public ?
service_2:
volumes:
- shared_vol/awesome.txt:/opt/awesome.txt
volumes:
shared_vol:
我有但不喜欢的工作解决方案,
- 运行
service_1
中的 script/cmd,将文件复制到共享卷:导致竞争条件,因为service_2
在启动时需要文件 - 引入第三项服务,其他两项服务
depends_on
,除了将文件放入共享卷外什么都不做
非常感谢任何帮助、提示或指导!
你能做这样的事情吗
version: '3.5'
volumes:
xxx:
services:
service_1:
...
volumes:
- xxx:/app
service_2:
...
volumes:
- xxx:/opt