У меня есть развертывание с двумя контейнерами. Один из контейнеров пытается создать (во время развертывания) пакет javascript, который пытается обслуживать другой контейнер, nginx.
Я хочу использовать общий том для размещения пакета javascript после он построен.
На данный момент у меня есть следующий файл развертывания (с удаленными нерелевантными частями):
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
...
template:
...
spec:
hostNetwork: true
containers:
- name: personal-site
image: wheresmycookie/personal-site:3.1
volumeMounts:
- name: build-volume
mountPath: /var/app/dist
- name: nginx-server
image: nginx:1.19.0
volumeMounts:
- name: build-volume
mountPath: /var/app/dist
volumes:
- name: build-volume
emptyDir: {}
В меру своих возможностей я следовал этим руководствам:
Еще одна важная вещь: я пытаюсь запустить этот атм локально, используя minikube
.
РЕДАКТИРОВАТЬ: Dockerfile, который я использовал для создания этого образа:
FROM node:alpine
WORKDIR /var/app
COPY . .
RUN npm install
RUN npm install -g @vue/cli@latest
CMD ["npm", "run", "build"]
Я понимаю, что мне не нужно создавать это, когда я на самом деле запустить образ, но моя следующая цель - вставить информацию об экземпляре модуля в качестве переменных среды, поэтому с javascript, к сожалению, я могу построить только тогда, когда эта информация станет мне доступна.
Проблема
Журналы из контейнера personal-site
показывают:
- Building for production...
ERROR Error: EBUSY: resource busy or locked, rmdir '/var/app/dist'
Error: EBUSY: resource busy or locked, rmdir '/var/app/dist'
Я не уверен, почему сборка d пытается удалить /dist
, но есть ощущение, что это не имеет значения. Я мог ошибаться?
Я подумал, что, возможно, это может быть связано с жизненным циклом контейнеров / томов, но в документации предполагается, что «Том emptyDir сначала создается, когда Pod назначается узлу, и существует пока этот модуль работает на этом узле ".
Вопрос
По каким причинам том может быть недоступен для меня после того, как контейнеры уже запущены? Учитывая, что у вас, вероятно, гораздо больше опыта работы с Kubernetes, чем у меня, что бы вы изучили дальше?