在我的应用中,我有许多不同的Docker容器,包括nginx
和node
。在我的node
构建过程中下载依赖项并编译资产后,它们对我的其他容器和主机不可用。
另一方面,如果我挂载卷,node_modules
和我的public
将被覆盖,那么我的问题是:如何在docker环境中处理编译资产?
这就是我的docker-compose.yml
和我的Dockerile
的样子:
version: '3.5'
services:
nginx:
image: nginx:latest
volumes:
- ./:/var/www
- ./.docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
working_dir: /var/www
ports:
- 8282:80
node:
build:
context: ./
dockerfile: Dockerfile
tty: true
Dockerfile:
FROM node:8.15-slim
WORKDIR /var/www
COPY package.json yarn.lock ./
RUN yarn
COPY webpack.config.js ./
COPY resources ./resources/
COPY public ./public/
RUN yarn run dev
如您所见,我没有在node
容器上装载任何卷,因此很明显,在public
目录中托管“看不到”我的编译资产。
如果装载卷,public
文件夹将被覆盖,因为主机的public
文件夹为空,所以我也看不到资产。
node:
build:
context: ./
dockerfile: .docker/node/Dockerfile
tty: true
volumes:
- ./package.json:/var/www/package.json
- ./yarn.lock:/var/www/yarn.lock
- ./resources:/var/www/resources
- ./public/js:/var/www/public/js