Docker compose:如何在不使用命名卷或多阶段构建的情况下在服务之间共享数据

Docker compose:如何在不使用命名卷或多阶段构建的情况下在服务之间共享数据,docker,docker-compose,Docker,Docker Compose,有没有办法在容器之间共享数据。有以下docker编写文件 version: '3' services: app_build_prod: container_name: 'app' build: context: ../ dockerfile: docker/Dockerfile args: command: build:prod nginx:

有没有办法在容器之间共享数据。有以下docker编写文件

version: '3'
services:
    app_build_prod:
        container_name: 'app'
        build:
            context: ../
            dockerfile: docker/Dockerfile
            args:
                command: build:prod
    nginx:
        container_name: 'nginx'
        image: nginx:alpine
        ports:
            - "80:80"
        depends_on:
            - app_build_prod
Dockerfile内容为:

FROM node:10-alpine as builder

## Installing missing packages, fixing git self signed certificate issue
RUN apk update && apk upgrade && \
    apk add --no-cache bash git openssh && \
    rm -rf /var/cache/apk/* && \
    git config --global http.sslVerify false

## Defigning app directory
WORKDIR /usr/app

## Copying files. Files listed in .dockerignore are omitted
COPY . .

## node_modules are on a separate intermediate image will prevent unnecessary npm installs at each build
RUN npm ci

## Declaring arguments and environment variables. Important to declara env var to consume them on run stage
ARG command=build:prod
ENV command=$command
ENTRYPOINT npm run ${command}
尝试使用@Robert's,但无法使其工作-应用程序容器崩溃,原因是:

EBUSY:资源正忙或已锁定,rmdir'/usr/app/dist
错误:EBUSY:资源正忙或已锁定,rmdir'/usr/app/dist'

我的假设是,
/usr/app/dist
目录是以只读访问方式装载的,因此,在构建之前尝试删除它时,会抛出一个错误

需要按照以下方向发送数据

app_build_prod:/usr/app/dist => nginx:/usr/share/nginx/html

我遇到同样的问题,将共享更改为使用build:

并将docker compose更改为:

version: '3'
services:
    nginx:
        container_name: 'nginx'
        build:
             ...
        ports:
            - "80:80"

这回答了你的问题吗?没有@Robert的方法使容器崩溃。为什么你说它不能是多阶段构建?这是正确的Docker模式。@DavidMaze Dockerfile只是一个生成器。nginx是有条件的。例如,只有当应用程序在
build:prod
模式下运行时,我们才需要运行nginx容器。此外,还有15个docker compose服务(通过不同的容器构建脚本:
测试
跟踪
观察
,等等…)谢谢你,伙计。我曾经通过使用多阶段构建来实现这一点,但我不能在这种特殊情况下使用它,我需要找到一种只使用docker compose的方法!我可以问一下为什么应用程序容器会崩溃吗?我认为最主要的原因是权限错误检查应用程序\u构建\u产品用户它崩溃是因为“EBUSY:资源繁忙或已锁定”。更新问题
version: '3'
services:
    nginx:
        container_name: 'nginx'
        build:
             ...
        ports:
            - "80:80"