Постоянные тома Kubernetes, удаляющие исходные файлы - PullRequest
0 голосов
/ 30 января 2020

Модуль моего приложения и модуль nginx совместно используют постоянный том для файлов c. Когда образ приложения создается с помощью docker, файлы stati c создаются в месте, к которому постоянный том stati c будет позднее привязываться при развертывании контейнеров.

Однако, похоже, что при развертывании все файлы стираются из каталога stati c. Это связано с порядком развертывания? Пример: сначала необходимо применить постоянный том, затем развертывание nginx (поскольку подключенный каталог stati c сначала пуст), а затем приложение (которое уже имеет файлы в подключенном каталоге)

1 Ответ

0 голосов
/ 30 января 2020

Kubernetes (на самом деле среда выполнения контейнера внизу) bind mounts том / каталог с хоста в контейнер. Все файлы и подкаталоги в целевом каталоге контейнеров скрыты под содержимым каталога, который теперь монтируется сверху.

Вам действительно нужен общий том для этих данных? Что-нибудь из этого обновляется во время выполнения?

Если вам нужны общие данные, вы можете добавить initContainer в ваше развертывание, и оно сможет управлять копированием данных на том. Для сложных сценариев ios, rsync обычно будет иметь флаг для того, что вам нужно сделать.

  initContainers:
  - name: app
    image: my/nginx:1.17
    volumeMounts:
    - name: app-data
      mountPath: /app/data
  - name: app-data
    image: my/app:3.1.4
    command: ["sh", "-c", "cp -r /app/dist/. /app/data"]
    volumeMounts:
    - name: app-data
      mountPath: /app/data

Звучит так, как будто вы принимаете SPA * 1015. *. Если общий том предназначен просто для загрузки встроенных файлов stati c в контейнер nginx, возможно, при внедрении файлы могут вставляться в контейнер веб-сервера, а не работать с томами.

FROM docker.io/node:12 AS build
WORKDIR /app
COPY . /app/
RUN yarn install && yarn build

FROM docker.io/nginx:1.17
COPY --from=build /app/dist/. /usr/share/nginx/html/
CMD [ "nginx", "-g", "daemon off;" ]
...