Docker 如何在kubernetes中部署npm运行构建的dist文件夹?
我有一个node.js应用程序,我正试图部署到Kubernetes。要在我的机器上正常运行而不使用Kubernetes,我将运行命令npm install和npm run build,然后为dist文件夹提供服务。通常我会使用npm安装-g serve安装npm的serve,然后运行serve-s dist。这很好。但是现在要部署到Kubernetes进行生产,我如何创建我的映像?我的意思是,这个docker文件应该是什么样子 注意:我不想使用nginx、apache或任何类型的web服务器。我想使用node/npm的服务器为dist文件夹提供服务。Plz帮助 Dockerfile我试过的Docker 如何在kubernetes中部署npm运行构建的dist文件夹?,docker,npm,kubernetes,Docker,Npm,Kubernetes,我有一个node.js应用程序,我正试图部署到Kubernetes。要在我的机器上正常运行而不使用Kubernetes,我将运行命令npm install和npm run build,然后为dist文件夹提供服务。通常我会使用npm安装-g serve安装npm的serve,然后运行serve-s dist。这很好。但是现在要部署到Kubernetes进行生产,我如何创建我的映像?我的意思是,这个docker文件应该是什么样子 注意:我不想使用nginx、apache或任何类型的web服务器。我
FROM node:8
WORKDIR /usr/src/app
COPY /dist
RUN npm install -g serve
serve -s dist
我确信此dockerfile是否正确。因此,我需要有关如何正确创建image to service dist文件夹(npm run build.Plz help?我认为您可以在全球范围内找到大量关于Kubernetes群集中客户web应用程序集成的教程,并进一步向服务访问者公开这些教程 实际上,在环境中封装的应用程序必须从工具中移植或在工具中构建,以保持应用程序的所有服务依赖性;当映像准备就绪时,它可以公开存储或隔离存储,因此Kubernetes容器随后会提取该映像,并根据声明的资源在集群内创建适当的工作负载 我建议采用以下方案: 根据您的初始docker文件构建docker映像我做了一些更正:
FROM node:8
WORKDIR /usr/src/app
COPY dist/ ./dist/
RUN npm install -g serve
$sudo docker图像构建
创建与源映像相关的文件:
$sudo docker标记源\图像[:标记]目标\图像[:标记]
将图像导出到DockerHub或某些专用注册表:
$sudo docker push[选项]名称[:标记]
创建相关的Kubernetes workloadPod并将其应用于Kubernetes群集,启动容器内的节点服务器,侦听5000端口:
如果考虑为外部群集客户端公开应用程序,则查看服务:
$kubectl暴露po节点测试-端口=5000-目标端口=5000-类型=NodePort 更新1: 然后,应用程序服务可能可以在主机上的某个特定端口内访问,您只需检索此端口值: kubectl get svc nodetest-o jsonpath='{.spec.ports[0].nodePort}' 更新2: 为了在某些所需端口上公开NodePort服务,只需应用以下清单,即端口分配:apiVersion: v1
kind: Service
metadata:
labels:
node: test
name: nodetest
spec:
ports:
- nodePort: 30000
port: 5000
protocol: TCP
targetPort: 5000
selector:
node: test
type: NodePort
您好,我尝试了您所说的,但我的连接被拒绝确实,当您应用NodePort服务类型时,k8s从范围默认值中分配一些端口:30000-32767,它将代理主机上的目标服务5000端口,请参阅我答案中的更新部分。好的,如何将其公开到特定的nodeport值,如30000?最后一个问题…是否可以使用部署来代替pod?是的,我刚刚解释了pod的基本内容,但是,一旦决定控制pod副本和所有其他功能,您可以转移到一些高级资源,如部署。
apiVersion: v1
kind: Service
metadata:
labels:
node: test
name: nodetest
spec:
ports:
- nodePort: 30000
port: 5000
protocol: TCP
targetPort: 5000
selector:
node: test
type: NodePort