簡體   English   中英

創建僅包含webapp和服務器的docker容器

[英]Create docker container that only contains webapp and server

我有一個基本上具有以下結構的項目: (*)

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

"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/

現在,我想以此創建一個docker映像。

我有一個正在運行的Dockerfile 看起來像這樣:

FROM node:boron
WORKDIR /usr/src/app
COPY package.json .
COPY . .
RUN npm run build
EXPOSE 9090
CMD [ "node", "server/server.js" ]

但是據我了解,它會復制目錄中的所有內容,然后創建dist/文件夾,最終的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/

如何配置Docker映像以僅包含(**)中的內容

運行npm run build將創建dist文件夾,這是您想要的。 之后,您可以通過將以下內容添加到docker文件中,從圖像中刪除不需要的內容

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文件夾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM