带有webpack和卷的Docker容器不会将文件从容器卷保存到主机中。 只是空的文件夹

我有泊坞合成文件服务几个容器。

主要思想:通过webpack构build前端应用程序,然后通过卷将构build的文件授予对nginx容器的访问。 不幸的是,我尝试了很多东西(偶然发现了容器启动时未连接的卷的知识),而且我的当前设置如下所示:

泊坞窗,compose.yml

version: '2' services: nginx: build: context: . dockerfile: nginx.dockerfile ports: - '10040:80' depends_on: - app volumes: - './docker/app/src:/app/src' - './docker/app/dist:/app/dist' - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf app: build: context: . dockerfile: ./app.dockerfile entrypoint: ./app-build-dev.sh volumes: - './docker/app/src:/app/src/:rw' - './docker/app/dist:/app/dist/:rw' - './docker/app/node_modules:/app/node_modules/:rw' 

这里是app.dockerfile的dockerfile

 FROM "node" COPY . /build-dir WORKDIR /build-dir RUN rm -rf node_modules RUN rm -rf dist 

这是我的脚本的webpack容器(app-build-dev.sh):

 #!/bin/sh cd /build-dir # echo "CHECKING INNARDS OF /app/src" # ls -la /app/src # echo "CHECKING INNARDS OF /app/src/js/app" # ls -la /app/src/js/app npm i npm run build-dev echo "CHECKING INNARDS OF /build-dir" ls -la /build-dir echo "CHECKING INNARDS OF /build-dir/src" ls -la /build-dir/src echo "CHECKING INNARDS OF /build-dir/dist" ls -la /build-dir/dist # echo "Checking index.html built" # cat /build-dir/dist/index.html echo "Copying everything into /app so it can be shared with nginx" cp -R /build-dir/* /app/* echo "CHECKING INNARDS OF /app/src" ls -la /app/src echo "CHECKING INNARDS OF /app/dist" ls -la /app/dist echo "Done" 

正如你可以看到我试图以欺骗卷,因为如果我会直接在卷(在/容器中的应用程序) – webpack甚至不会find所需的文件,并保存损坏的index.html一个文件与消息,没有这样的文件。 但是,这有点关键。

无论如何,我build立里面/ build-dir,然后复制到容器内的挂载的卷文件夹,所以它将镜像到主机(然后可以由nginx容器使用)。

我从那个.sh脚本得到的。 一切都很好,除了/ app / dist目录在容器中是空的(/ src被复制的类罚款)

而在我的主机上,我有所有的安装文件夹,但…空。 没有。 文件不在那里。

我在这里错过了一般概念吗?

谢谢!