如何将文件复制到 Docker 卷并通过 docker-compose 使用该卷

Fra*_*ain 7 docker docker-compose docker-volume

  • Docker 容器中运行着一个 Web 服务。
  • 该 Web 服务依赖于大 json 文件来启动。

我创建了一个 Docker 卷来存储 json 文件docker volume create my-api-files

这是docker-compose网络服务的文件:

version: '3'

services:
  my-api:
    image: node:alpine
    expose:
      - ${NODE_PORT}
    volumes:
      - ./:/api
      - my-api-files:/files
    working_dir: /api
    command: npm run start

volumes: 
  my-api-files: 
    external: true
Run Code Online (Sandbox Code Playgroud)

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

R Y*_*R Y 4

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

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
Run Code Online (Sandbox Code Playgroud)

您应该在其中看到 JSON 文件。

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