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

时间:2017-12-10 22:45:44

标签: docker webpack docker-compose docker-volume

我有docker-compose文件用于提供多个容器。

主要思想:通过webpack构建前端应用程序,然后通过卷授予对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"

正如你所看到的,我试图以某种方式欺骗卷,因为如果我直接在卷中工作(在容器中的/ app中) - webpack甚至找不到所需的文件并为index.html保存损坏的一个文件,并带有消息没有这样的文件。但那有点不合时宜。

无论如何,我构建内部/ build-dir然后复制到容器内的已装载卷文件夹,因此它将被镜像到主机(然后可以被nginx容器使用)。

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

在我的主机上,我有所有已安装的文件夹但是......空了。没有。文件不存在。

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

谢谢!

0 个答案:

没有答案
相关问题