Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有网页包和卷的Docker容器不会将文件从容器卷保存到主机中。只是空文件夹_Docker_Webpack_Docker Compose_Docker Volume - Fatal编程技术网

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

带有网页包和卷的Docker容器不会将文件从容器卷保存到主机中。只是空文件夹,docker,webpack,docker-compose,docker-volume,Docker,Webpack,Docker Compose,Docker Volume,我有一个docker compose文件,用于服务多个容器 主要思想:通过webpack构建前端应用程序,然后通过卷向nginx容器授予对构建文件的访问权。不幸的是,我尝试了很多事情(偶然发现我不知道在容器启动但未构建时卷是连接的),我当前的设置如下所示: docker-compose.yml version: '2' services: nginx: build: context: . dockerfile: nginx.dockerfile por

我有一个docker compose文件,用于服务多个容器

主要思想:通过webpack构建前端应用程序,然后通过卷向nginx容器授予对构建文件的访问权。不幸的是,我尝试了很多事情(偶然发现我不知道在容器启动但未构建时卷是连接的),我当前的设置如下所示:

docker-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
以下是我的Web包容器脚本(app-build-dev.sh):

正如您所看到的,我试图以某种方式欺骗卷,因为如果我直接在卷中工作(在容器中的/app中),webpack甚至不会找到所需的文件,并将损坏的一个文件保存到index.html,并显示没有此类文件的消息。但这有点离谱

无论如何,我构建了inside/build dir,然后复制到容器中的mounted volume文件夹中,这样它就会被镜像到主机上(然后可以被nginx容器使用)

我从中得到了什么。sh脚本。除了/app/dist dir在容器中是空的(/src是复制的)之外,一切都正常

在我的主机上,我有所有挂载的文件夹,但。。。空的。没有什么。文件就是不在那里

我是不是错过了一般的概念

谢谢

#!/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"