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