创建搬运工容器只包含Web应用程序和服务器
问题描述:
我基本上具有这样的结构的项目:(*)创建搬运工容器只包含Web应用程序和服务器
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/
文件夹创建一个dist/
文件夹。
这是我package.json
:(**)
my_project/
├── server/
│ ├── node_modules/
│ └── server.js
└── dist/
├── webapp/
└── assets/
现在我想离开这个创造一个码头工人形象:
"scripts": {
"prebuild": "npm run install:client && npm run install:server",
"build": "webpack",
"install:client": "npm install",
"install:server": "cd server/ && npm install"
}
最后的项目只有这需要。
我有一个Dockerfile
现在正在工作。它看起来像这样:
FROM node:boron
WORKDIR /usr/src/app
COPY package.json .
COPY . .
RUN npm run build
EXPOSE 9090
CMD [ "node", "server/server.js" ]
但是从我的理解,它会将我的一切都在我的目录,然后创建dist/
文件夹,并最终搬运工图像包含了这一切:(***)
如何配置泊坞窗图像只含有
答
运行npm run build
将创建dist文件夹的东西(**)这是你想要的。之后,你可以删除你不加入从图像所需要的东西,下面的泊坞窗文件
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文件夹
对不起,它不工作我得到'步骤5/7:RUN npm run build && rm -rf!(server | dist) --->在e6db783f4fa0中运行 /bin/sh:1:语法错误:“(”unexpected 命令'/ bin/sh -c npm run build && rm -rf!(server | dist)'返回一个非零代码:2' – petur
@petur更新了答案 – yamenk
Sweet!实际上它是使用'RUN npm run build && rm -rf解决的!“(服务器| DIS T)“' – petur