docker-组成服务之间的共享卷
docker-compose shared volumes between service
我想将文件从一项服务共享到另一项服务。
我举个小例子。
- Docker-compose.yml
- 手机:
- docker文件
- app.apk
- 网络:
- docker文件
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
找到名称。
我想将文件从一项服务共享到另一项服务。 我举个小例子。
- Docker-compose.yml
- 手机:
- docker文件
- app.apk
- 网络:
- docker文件
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
找到名称。