创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文件夹