如何将文件复制到Docker卷并与Docker compose一起使用该卷 Docker容器中运行着一个Web服务 这个Web服务依赖于大的json文件来引导

如何将文件复制到Docker卷并与Docker compose一起使用该卷 Docker容器中运行着一个Web服务 这个Web服务依赖于大的json文件来引导,docker,docker-compose,docker-volume,Docker,Docker Compose,Docker Volume,我创建了一个Docker卷来存储json文件,Docker卷创建了我的api文件 以下是Web服务的docker compose文件: 版本:“3” 服务: 我的api: 图片:节点:阿尔卑斯山 揭露: -${NODE_PORT} 卷数: -./:/api -我的api文件:/file 工作目录:/api 命令:npm run start 卷数: 我的api文件: 外部:正确 现在,在使用docker compose up启动Web服务之前,我如何将json文件复制到my api filesd

我创建了一个Docker卷来存储json文件,Docker卷创建了我的api文件

以下是Web服务的
docker compose
文件:

版本:“3”
服务:
我的api:
图片:节点:阿尔卑斯山
揭露:
-${NODE_PORT}
卷数:
-./:/api
-我的api文件:/file
工作目录:/api
命令:npm run start
卷数:
我的api文件:
外部:正确

现在,在使用
docker compose up启动Web服务之前,我如何将json文件复制到
my api files
docker卷?

您可以使用该卷运行临时容器,并将装载绑定到主机文件,然后从那里运行副本:

docker run --rm -it -v my-api-files:/temporary -v $PWD/jsonFileLocation:/big-data alpine cp /big-data/*.json /temporary
docker run --rm -it -v my-api-files:/test alpine ls /test
你应该在那里看到你的JSON文件


编辑:当然,用JSON文件位置和操作系统语法替换
$PWD/jsonFileLocation

您不需要复制。docker卷将把文件目录装入容器内的my api files目录。我不想将文件存储在docker容器内。这就是为什么我想使用一个单独的卷。这是从2017年开始的StackOverflow,docker compose还有一个悬而未决的问题。好了,这个问题没有一个直接的解决方案,但是你可以解决它,你不需要复制任何东西。您只需将主机上的目录装入容器上的路径即可。的第一部分向您展示了如何操作。卷和绑定装载的全部要点是您不需要复制数据。您只需放置正确的路径,您的主机数据就可以在容器中使用。你可以阅读更多关于他们的信息。