Node.js 容器在docker中工作,但不在Kubernetes集群中工作
今天,我在将应用程序从WSL实例移植到raspberry pi时遇到了一个有趣的问题 我在raspberry上重建了docker映像,并验证它是否在正确的体系结构上运行。这是我的Dockerfile:Node.js 容器在docker中工作,但不在Kubernetes集群中工作,node.js,docker,kubernetes,puppeteer,Node.js,Docker,Kubernetes,Puppeteer,今天,我在将应用程序从WSL实例移植到raspberry pi时遇到了一个有趣的问题 我在raspberry上重建了docker映像,并验证它是否在正确的体系结构上运行。这是我的Dockerfile: FROM node:14.15.0-alpine3.12 EXPOSE 8080 ENV CHROME_BIN="/usr/bin/chromium-browser" \ NODE_ENV="production" RUN set -x \
FROM node:14.15.0-alpine3.12
EXPOSE 8080
ENV CHROME_BIN="/usr/bin/chromium-browser" \
NODE_ENV="production"
RUN set -x \
&& apk update \
&& apk upgrade \
&& apk add --no-cache \
dumb-init \
udev \
ttf-freefont \
chromium \
&& npm install puppeteer-core@1.10.0 --silent \
\
# Cleanup
&& apk del --no-cache make gcc g++ binutils-gold gnupg libstdc++ \
&& rm -rf /usr/include \
&& rm -rf /var/cache/apk/* /root/.node-gyp /usr/share/man /tmp/* \
&& echo
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
ENTRYPOINT [ "sh","/usr/src/app/run.sh" ]
``run.sh´´´文件非常简单,只运行节点项目
#!/bin/bash
npm start
对于部署,我有一个直接的文件,其中包含从本地注册表提取映像的部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: ds-deployment
namespace: absorbeo
labels:
kubernetes.labels.app: ds-server
spec:
replicas: 1
selector:
matchLabels:
app: ds-server
template:
metadata:
labels:
app: ds-server
spec:
containers:
- image: localhost:32000/download-server
imagePullPolicy: IfNotPresent
name: ds-server
ports:
- containerPort: 8080
name: ds-port
resources:
limits:
memory: 180Mi
cpu: 250m
requests:
memory: 128Mi
cpu: 100m
---
kind: Service
apiVersion: v1
metadata:
name: ds-server-svc
namespace: absorbeo
spec:
selector:
app: ds-server
type: LoadBalancer
ports:
- port: 3000
targetPort: 80
在检查pod的日志输出时,我得到以下错误
standard_init_linux.go:219: exec user process caused: exec format error
我看不到任何文件使用了错误的编码或丢失了shebang行。
在已安装的Docker上运行同一个容器时,它不会出现任何问题
我做错了什么吗?这是我第一次在raspberry pi上运行Micro8ks服务器
提前谢谢