docker-组成服务之间的共享卷

docker-compose shared volumes between service

我想将文件从一项服务共享到另一项服务。 我举个小例子。

docker-compose.yml

version: "3.7"

services:
  web:
    build: ./web
    depends_on: 
      - mobile
    volumes:
      - data-volume:/var/lib/shared

  mobile:
    build: ./mobile
    volumes:
      - data-volume:/var/lib/shared

volumes:
  data-volume:

Dockerfile.yml(手机)

FROM node:alpine AS mobile

COPY app.apk /var/lib/shared

RUN ls /var/lib/shared

Dockerfile.yml(网络)

FROM node:alpine AS web

RUN ls /var/lib/shared

所以我想在 Web 服务中从移动服务中看到 app.apk。

我尝试在 docker-compose 中使用卷,但它不起作用。我想了好几个小时。

有人知道怎么做吗?

首先执行docker文件。然后,撰写文件会覆盖共享文件夹。您无法访问 docker 文件中的卷。

  • 当您第一次构建 docker-容器时,您的 app.apk 会被复制到 docker- 图像中。
  • 然后 compose 启动容器并将新的(可能是空的)文件夹安装到 /var/lib/shared
  • 那么 /var/lib/shared 的旧内容被新内容 "overshadowed" 了,你就不能再访问旧内容了。

解决方案:启动容器后将app复制到volume中

使用docker exec -it <container_name> bash,您可以在容器启动后启动一个shell。您可以通过 docker ps 找到名称。