创build只包含webapp和服务器的docker容器
我有一个基本上有这样的结构的项目: (*)
my_project/ ├── server/ │ ├── node_modules/ │ └── server.js ├── src/ ├── node_modules/ ├── Dockerfile └── {multiple important config files for webpack and typescript etc}.json
我使用npm run build
项目。 这会从src/
文件夹创build一个dist/
文件夹。
这是我的package.json
:
"scripts": { "prebuild": "npm run install:client && npm run install:server", "build": "webpack", "install:client": "npm install", "install:server": "cd server/ && npm install" }
最后的项目只需要这个: (**)
my_project/ ├── server/ │ ├── node_modules/ │ └── server.js └── dist/ ├── webapp/ └── assets/
现在我想创build一个Docker镜像。
我有一个现在正在工作的Dockerfile
。 它看起来像这样:
FROM node:boron WORKDIR /usr/src/app COPY package.json . COPY . . RUN npm run build EXPOSE 9090 CMD [ "node", "server/server.js" ]
但从我的理解,它复制我在我的目录中的一切,然后创builddist/
文件夹和最终docker图像包含所有这一切: (***)
my_project/ ├── server/ │ ├── node_modules/ │ └── server.js ├── src/ ├── node_modules/ ├── Dockerfile ├── {multiple important config files for webpack and typescript etc}.json └── dist/ ├── webapp/ └── assets/
我如何configurationDocker镜像以仅包含(**)中的内容
运行npm run build
会创builddist文件夹,这就是你想要的。 之后,您可以通过将以下内容添加到泊坞窗文件中,从图像中删除不需要的东西
FROM node:boron WORKDIR /usr/src/app COPY package.json . COPY . . RUN npm run build && /bin/bash -c "find . -not -name 'server' -not -name 'dist' -delete" EXPOSE 9090 CMD [ "node", "server/server.js" ]
命令/bin/bash -c "find . -not -name 'server' -not -name 'dist' -delete"
将只保留服务器和dist文件夹