【问题标题】:Create docker container that only contains webapp and server创建仅包含 webapp 和服务器的 docker 容器
【发布时间】:2018-03-08 17:52:27
【问题描述】:

我有一个项目,其结构基本上是这样的:(*)

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 镜像配置为仅包含 (**)

中的内容

【问题讨论】:

    标签: node.js docker webpack dockerfile


    【解决方案1】:

    运行 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" 命令只会保留 server 和 dist 文件夹

    【讨论】:

    • 对不起,它不起作用我收到Step 5/7 : RUN npm run build && rm -rf !(server|dist) ---> Running in e6db783f4fa0 /bin/sh: 1: Syntax error: "(" unexpected The command '/bin/sh -c npm run build && rm -rf !(server|dist)' returned a non-zero code: 2
    • 甜蜜!实际上它是使用RUN npm run build && rm -rf !"(server|dist)"解决的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2023-01-28
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多