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

时间:2020-01-13 21:42:03

标签: docker docker-compose dockerfile docker-volume

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

  • Docker-compose.yml
  • 手机:
    • dockerfile
    • app.apk
  • 网站:
    • dockerfile

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中使用卷,但是它不起作用。我试图弄清楚几个小时。

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:2)

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

  • 当您首次构建docker-container时,您的app.apk被复制到docker-image中。
  • 然后compose启动容器,并将新的(可能是空的)文件夹安装到/var/lib/shared
  • 然后,/ var / lib / shared的旧内容被新内容“盖过”,您将无法再访问旧内容。

解决方案:启动容器后将应用复制到该卷中。

使用docker exec -it <container_name> bash,可以在启动后在容器中启动外壳。您可以使用docker ps查找名称。