最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

NPM要素:没有这样的文件或目录,在kubernetes作业运行期间打开'usrsrcapppackage.json

IT培训 admin 14浏览 0评论

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

我有具有自定义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安装比此处显示的要容易得多。

发布评论

评论列表 (0)

  1. 暂无评论