Файл package.json не найден при использовании kubernetes
Я пытаюсь настроить kubernetes в моей локальной среде, используя докер. Я построил необходимый образ докера с этим Dockerfile:
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 в облачном хранилище Google. Теперь я могу подтвердить, что могу выдвигать и извлекать изображение из облачного репозитория, поэтому я затем построил 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: {}
Как вы можете видеть в разделе args моего yaml, я перечисляю все файлы в моем каталоге /usr/src/app
Однако это журналы делают единственный файл, который появляется, является одним package-lock.json
файл, который приводит к сбою следующей команды установки. Эта ошибка, однако, не возникает, когда я использую docker-compose для запуска своего приложения, поэтому по какой-то причине проблемы возникают только у моих kubernetes. Также я могу подтвердить, что мое изображение содержит package.json
файл с помощью интерактивной оболочки. Я не уверен, как поступить, поэтому любая помощь будет оценена!
1 ответ
Вы устанавливаете что-то еще на /usr/src/app
где package.json
должен быть расположен. Это скрывает все файлы там. Удалить volumes
а также volumeMounts
разделы.