【发布时间】:2021-04-01 14:30:36
【问题描述】:
晚上好,首先,对不起,如果我不尊重所有 StackOverflow 代码,这是我第一次发布我的问题。
对于一个项目,我开发了一个带有节点服务器和 React 客户端的应用程序,但在 Kubernetes 上部署 react 时遇到了一些问题。
经过多次研究,我了解到要使用 react docker,我必须以交互模式启动 docker,并带有标志 -it。
所以这里是我用来 dockersize 我的前面的查询。
docker build -t front-end .
docker run -it -p 3000:3000 -d front-end
这里是 dockerfile。
FROM node:12-slim
ENV NODE_ENV production
WORKDIR /usr/src/app/front-end
COPY ./package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
在 docker 应用程序上,此设置可以正常工作。但是我在使用 Kubernetes 时遇到了一些问题。我无法在交互模式下使用容器启动 Pod,我尝试了几种方法,但这是我的最后一种:
apiVersion: apps/v1
kind: Deployment
metadata:
name: front
spec:
replicas: 1
selector:
matchLabels:
app: webapps-front-test
version: v01
template:
metadata:
labels:
app: webapps-front-test
version: v01
spec:
volumes:
containers:
- name: front
image: myRep/do_front
stdin: true
tty: true
ports:
- containerPort: 3000
args:
- "-it"
编辑: 这发生在 Kubernetes 上:
kubectl get pods
NAME READY STATUS RESTARTS AGE
front-76998f6794-xx 0/1 CrashLoopBackOff 11 33m
当我在 docker 上运行时会发生这种情况(这不是问题,因为使用了 -it)
> react-scripts start
ℹ 「wds」: Project is running at http://1xx.x.x.x/
ℹ 「wds」: webpack output is served from
ℹ 「wds」: Content not from webpack is served from /usr/src/app/front-end/public
ℹ 「wds」: 404s will fallback to /
你知道如何解决这个问题吗? 谢谢, 晚上好/每天
【问题讨论】:
-
在容器中执行命令时使用交互模式。它仅用于附加容器,您不需要
stdin、tty或args。一旦 pod 启动并运行,您就可以使用kubectl exec -it POD_NAME -- /bin/bash启动一个 shell。 -
感谢@tentative,但我什至无法让吊舱处于运行状态。我陷入了
CrashLoopBackOff状态。 -
使用
kubectl describe pod front-76998f6794-xx这个命令检查事件或使用kubectl logs front-76998f6794-xx查看日志 -
你能把你的图片的
react-scripts start入口点设为myRep/do_front吗?
标签: node.js reactjs docker kubernetes