1

Kubernetes 卷挂载问题。

mongo-express 容器有一个文件/node-modules/mongo-express/config.js

我需要用我的/tmp/config.js覆盖/node-modules/mongo-express/config.js

我正在尝试将 /tmp 下的自定义 config.js(由 ConfigMaps 挂载)复制到容器路径 /node-modules/mongo-express 下的文件夹中。

但我无法做到这一点并得到以下错误:

cp: 无法创建 '/node_modules/mongo-express/config.js': 文件存在

下面我们可以找到我用来实现这一点的deployment.yaml 。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-express
spec:
  selector:
    matchLabels:
      app: mongo-express
  template:
    metadata:
      labels:
        app: mongo-express
    spec:
      containers:
        - name: mongo-express
          image: mongo-express:latest
          command:
            - sh
            - -c
            - cp /tmp/config.js /node_modules/mongo-express
          ports:
            - name: mongo-express
              containerPort: 8081
          volumeMounts:
            - name: custom-config-js
              mountPath: /tmp
      volumes:
        - name: custom-config-js
          configMap:
            name: mongodb-express-config-js

我试过了:

  • cp -f /tmp/config.js /node_modules/mongo-express
  • cp -r /tmp/config.js /node_modules/mongo-express
  • \cp -r /tmp/config.js /node_modules/mongo-express

以及更多。但没有成功。任何帮助深表感谢。

4

1 回答 1

0

大多数容器镜像是不可变的。

您可能需要的是 subPath 挂载:

volumeMounts:
- mountPath: /node_modules/mongo-express/config.js
  name: custom-config-js
  subPath: config.js
于 2021-08-10T21:12:46.170 回答