Docker 在主机和容器之间共享/tmp文件夹
我目前正致力于将具有多个服务的单个应用程序转换为运行每个服务的多个docker容器。我当前的问题是:这些服务最初共享位于tmp/文件夹上的一些文件,因此主机的tmp/文件夹需要在容器之间装载和共享 我已经尝试过最明显的解决方案,即像通常那样安装文件夹: 这确实会按预期共享文件夹,但会删除容器tmp/文件夹的所有内容,从而破坏应用程序Docker 在主机和容器之间共享/tmp文件夹,docker,docker-compose,dockerfile,docker-volume,Docker,Docker Compose,Dockerfile,Docker Volume,我目前正致力于将具有多个服务的单个应用程序转换为运行每个服务的多个docker容器。我当前的问题是:这些服务最初共享位于tmp/文件夹上的一些文件,因此主机的tmp/文件夹需要在容器之间装载和共享 我已经尝试过最明显的解决方案,即像通常那样安装文件夹: 这确实会按预期共享文件夹,但会删除容器tmp/文件夹的所有内容,从而破坏应用程序 services: first: image: first_image build: context: . docker
services:
first:
image: first_image
build:
context: .
dockerfile: first/Dockerfile
ports:
- "8080:8080"
volumes:
- ./tmp/:/tmp
有什么方法可以正确地完成我想做的事情吗?或者至少有一种方法可以在容器内的服务启动之前装载文件?这样,临时文件将在之后创建,而不会被删除。此线程是我发现的最接近解决问题的线程,但它没有解决被删除的文件
从图像启动容器时,依赖填充的tmp文件夹提供Functional服务听起来非常危险。作为一个简单的例子,很多工具/发行版/基本映像经常在某些情况下集成tmp转储。你的应用程序应该在容器启动时创建tmp文件。在这种情况下,绑定在容器中挂载主机tmp应该是可行的(尽管主要是出于潜在的安全原因,我不会这么做)。我明白你的观点,实际上,当我的主要目标是尝试解耦应用程序时,拥有这样一个共享系统文件夹似乎有点奇怪。我还研究了绑定挂载,但根据docker docs的说法,绑定到一个非空文件夹会模糊(无论这意味着什么)容器文件,并且大多数情况下会导致容器损坏。链接到它:你的应用程序不应该中断并依赖一个填充了特定文件的tmp文件夹。启动时将其清除应该不是问题。