【问题标题】:Package.json file not found when using kubernetes使用 kubernetes 时找不到 Package.json 文件
【发布时间】:2018-09-24 07:17:07
【问题描述】:

我尝试使用 docker 在本地环境中设置 kubernetes。我已经用这个 Dockerfile 构建了必要的 docker 镜像:

FROM node:9.11.1

WORKDIR /usr/src/app
COPY package.json /usr/src/app/

RUN npm install
COPY . /usr/src/app/

EXPOSE 3002
CMD [ "npm", "start" ]

然后我将此图像推送到我在谷歌云存储库上的私人 docker 存储库。现在我可以确认我可以从云存储库中推送和拉取图像,因此我使用该存储库作为图像源文件构建了一个 docker-compose:

version: '3'

services:
  redis:
    image: redis
    ports:
      - 6379:6379
    networks:
      - my-network

  mongodb:
    image: mongo
    ports:
      - 27017:27017
    volumes:
      - ./db:/data/db
    networks:
      - my-network

  my-test-app:
    tty: true
    image: gcr.io/my-test-app
    ports:
      - 3002:3002
    depends_on:
      - redis
      - mongodb
    networks:
      - my-network
    volumes:
      - .:/usr/src/app
    environment:
      - REDIS_PORT=6379
      - REDIS_HOST=redis
      - DB_URI=mongodb://mongodb:27017/
    command: bash -c "ls && npm install"

networks:
  my-network:
    driver: bridge

volumes:
  mongodb:

最后,我使用 Kubernetes kompose 生成我的部署文件,如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.12.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: my-test-app
  name: my-test-app
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: my-test-app
    spec:
      imagePullSecrets:
        - gcr-json-key
      containers:
      - args:
        - bash
        - -c
        - ls && npm install
        env:
        - name: DB_URI
          value: mongodb://mongodb:27017/
        - name: REDIS_HOST
          value: redis
        - name: REDIS_PORT
          value: "6379"
        image: gcr.io/my-test-app
        name: my-test-app
        ports:
        - containerPort: 3002
        resources: {}
        tty: true
        volumeMounts:
        - mountPath: /usr/src/app
          name: my-test-app-claim0
      restartPolicy: Always
      volumes:
      - name: my-test-app-claim0
        persistentVolumeClaim:
          claimName: my-test-app-claim0
status: {}

正如您在我的 yaml 的 args 部分中看到的,我列出了我的目录 /usr/src/app 中的所有文件,但是它记录的唯一文件是单个 package-lock.json 文件,这会导致以下安装命令失败.但是,当我使用 docker-compose 启动我的应用程序时,不会发生此错误,因此由于某种原因,只有我的 kubernetes 有问题。我还可以通过运行交互式外壳来确认我的图像确实包含package.json 文件。我不确定如何继续,所以任何帮助将不胜感激!

【问题讨论】:

    标签: docker kubernetes google-cloud-platform google-cloud-repository


    【解决方案1】:

    您正在/usr/src/app 上安装其他东西,package.json 应该位于该位置。这隐藏了那里的所有文件。删除 volumesvolumeMounts 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多