docker在服务之间组合共享卷
我想将文件从一个服务共享到另一个服务。 我举一个简短的例子docker在服务之间组合共享卷,docker,docker-compose,dockerfile,docker-volume,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 mo
- Docker-compose.yml
- 流动电话:
- dockerfile
- app.apk
- 网站:
- dockerfile
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(移动)
Dockerfile.yml(web)
所以我想在web服务中查看移动服务中的app.apk
我尝试在docker compose中使用卷,但它不起作用。我已经想了好几个小时了
有人知道怎么做吗?首先执行dockerfile。然后,撰写文件将覆盖共享文件夹。您无法访问DockerFile中的卷
- 当您第一次构建docker容器时,您的
会被复制到docker映像中app.apk
- 然后compose启动容器并将新文件夹(可能是空的)装载到
/var/lib/shared
- 然后,/var/lib/shared的旧内容被新内容“遮蔽”,您无法再访问旧内容李>
使用
docker exec-it bash
可以在容器中启动shell。您可以使用docker ps
查找名称 好的,我如何等到容器启动后再复制我的应用程序?使用docker exec-it bash
可以在容器中启动shell。你可以通过docker ps
找到这个名字。好的,但这是一个学校项目,我只能使用docker compose build和docker compose up。您对此有什么想法吗?RUN
中的命令是在装入卷后执行的。例如,您可以使用它将内容复制到具有cp的卷中。(这是非常骇客,我不建议在任何其他设置)等等,我犯了一个错误。为此,您需要CMD
而不是RUN
FROM node:alpine AS mobile
COPY app.apk /var/lib/shared
RUN ls /var/lib/shared
FROM node:alpine AS web
RUN ls /var/lib/shared