作业运行期间打开'/usr/src/app/package.json"/>
NPM要素:没有这样的文件或目录,在kubernetes作业运行期间打开'/usr/src/app/package.json
我有具有自定义package-lock.json,package.json的node(node:10)Dockerfile,因此,使用此dockerfile我需要创建一个dockerimage,然后我要运行kubernetes job(kind:job)作为一项任务意味着如果任务结束,您的Pod将被杀死,并且还需要将/ usr / src / app /和/ usr / src / app / node_modules的输出安装到我的kubernetes主机路径中以提供静态内容。
Dockerfile:-
FROM node:10
WORKDIR /usr/src/app/
#COPY package*.json /usr/src/app/
COPY . /usr/src/app/
RUN npm install
Dockerfile目录中已经可用的文件:-
Dockerfile README.md codegen.yml package-lock.json package.json public src tsconfig.json
Kubernetes作业文件:-
apiVersion: batch/v1
kind: Job
metadata:
name: workspace-forntend
spec:
template:
metadata:
name: workspace-forntend
spec:
containers:
- name: workspace-forntend
image: node:10 (dummy path for public post)
imagePullPolicy: IfNotPresent
command: ["/bin/bash","-c"]
args: ["npm run build"]
volumeMounts:
- name: mount-1
mountPath: /usr/src/app/
- name: mount-2
mountPath: /usr/src/app/node_modules
volumes:
- name: mount-1
hostPath:
path: /root/mount-1
type: DirectoryOrCreate
- name: mount-2
hostPath:
path: /root/mount-2
type: DirectoryOrCreate
restartPolicy: Never
但出现错误:-
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /usr/src/app/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
注意:-所有权限(777),路径/ usr / src / app(pwd),用户(root)均完整。
回答如下:由于您已将应用程序代码COPY
放入Docker映像,因此您无需在作业规范中单独安装它。从作业规范中删除volumes:
和volumeMounts:
部分。您还需要更改image:
指向从该Dockerfile构建的映像,并推送到某些Docker注册表。
Kubernetes特别不适用于实时开发环境。 hostPath
卷实际上是普通Kubernetes存储系统周围的逃生通道,而不是维护存储或外部内容的常规方法。除了将应用程序代码放入显示的图像中,您还需要手动将应用程序复制到集群中的每个节点。这破坏了将为您提供的常规滚动升级序列部署,并从根本上抵消了您从Kubernetes获得的任何优势。
这几乎看起来像您正在尝试使用Kubernetes作为构建环境。为此设置一个专用的或云托管的工具可能会更好地为您服务。如果您要使用本地源代码树并在其上放置npm run build
,则使用本地Node安装比此处显示的要容易得多。
更多推荐
NPM要素:没有这样的文件或目录,在kubernetes作业运行期间打开'/usr/src/app/package.json
发布评论