gpt4 book ai didi

Kubernetes Persistent Volumes 删除初始文件

转载 作者:行者123 更新时间:2023-12-02 11:46:43 24 4
gpt4 key购买 nike

我的 app pod 和 nginx pod 共享一个静态文件的持久卷。当使用 docker 构建应用程序镜像时,静态文件将在稍后部署容器时静态持久卷将绑定(bind)到的位置生成。

但是,似乎在部署期间所有文件都从静态目录中删除了。这与部署顺序有关吗?例如:必须先应用持久化卷,然后是 nginx 部署(因为静态挂载目录一开始是空白的),然后是应用程序(挂载目录中已经有文件)

最佳答案

Kubernetes(真正的容器运行时底层)bind mounts从主机到容器的卷/目录。容器目标目录中的所有文件和子目录都隐藏在现在安装在顶部的目录的内容下。

你真的需要一个共享卷来存储这些数据吗?是否有任何在运行时更新?

如果您确实需要共享数据,可以添加 initContainer到您的部署,它可以管理数据到卷的副本。对于复杂的场景, 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 .如果共享卷只是将静态构建文件放入 nginx 容器中,则可能在构建时将文件注入(inject) Web 服务器容器,而不是处理卷。
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;" ]

关于Kubernetes Persistent Volumes 删除初始文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59979121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com