如何在kubernetes中部署npm run build的dist文件夹?

时间:2019-09-19 09:56:20

标签: docker npm kubernetes

我有一个要部署到Kubernetes的node.js应用程序。要在不使用Kubernetes的情况下在我的机器上正常运行它,我将运行命令npm install和npm run build,然后提供“ dist”文件夹。通常我会使用“ npm install -g serve”安装npm的服务,然后运行“ serve -s dist”。这很好。但是现在部署到Kubernetes进行生产时,如何创建映像?我的意思是docker文件应该如何看起来像这样吗?

注意:我不想使用nginx,apache或任何类型的Web服务器。我想使用node / npm的服务器来服务dist文件夹。请帮助

Dockerfile(我尝试过的)

FROM node:8

WORKDIR /usr/src/app

COPY /dist

RUN npm install -g serve

serve -s dist


我确定这个dockerfile是否正确,所以我需要有关如何正确创建映像以为npm的dist文件夹运行build.Plz帮助的指南吗?

1 个答案:

答案 0 :(得分:0)

我认为您可以在全球范围内找到大量有关Kubernetes集群中客户Web应用程序集成的教程,并将它们进一步展示给服务访问者。

实际上,在Docker环境中容器化的应用程序必须从Image移植到特定的Dockerfile或在Docker Compose工具中构建,以便保留所有应用程序的服务依赖当映像准备就绪时,可以将其存储在公共DockerHub或隔离的Private registry中,因此Kubernetes容器runtime然后提取此映像并在其中创建适当的工作负载(Pods)集群根据声明的资源model

我建议以下情况:

从最初的--------------------------------------------- TransactionId | Amount | Account| crdr | --------------------------------------------- 1 | 100 | 11111 | 1 | 1 | 100 | 12111 | 2 | 2 | 130 | 13133 | 1 | 2 | 130 | 13233 | 2 | 构建docker映像(我已进行了一些更正):

Dockerfile

FROM node:8 WORKDIR /usr/src/app COPY dist/ ./dist/ RUN npm install -g serve

创建与源图像相关的tag

$ sudo docker image build <PATH>

将映像导出到 DockerHub 或某些私有注册表:

$ sudo docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

创建相关的Kubernetes工作负载(Pod)并将其应用于Kubernetes集群,在容器内启动Node服务器,在$ sudo docker push [OPTIONS] NAME[:TAG]端口上侦听:

5000

如果您考虑向外部群集客户端公开应用程序,请查看NodePort服务:

apiVersion: v1 kind: Pod metadata: name: nodetest labels: node: test spec: containers: - name: node-test image: TARGET_IMAGE[:TAG] ports: - containerPort: 5000 command: [ "/bin/bash", "-ce", "serve -s dist" ]

更新_1:

然后可以在主机上某个特定端口上访问应用程序服务,您可以简单地检索以下端口值:

$ kubectl expose po nodetest --port=5000 --target-port=5000 --type=NodePort

更新_2:

要在某个所需的端口上公开kubectl get svc nodetest -o jsonpath='{.spec.ports[0].nodePort}'服务,只需应用以下清单,即可分配30000个端口:

NodePort