【发布时间】:2021-01-17 16:47:27
【问题描述】:
我部署了一个带有自定义 docker 镜像的 wordpress,该镜像将自定义主题复制到该镜像中,该镜像被部署到具有持久卷的 kubernetes 集群中。
初始部署效果很好,网站按预期显示。当我更新主题并部署新的 docker 映像时,问题就出现了,因为持久卷,主题文件似乎没有更新到 docker 映像中的新版本主题。
部署新镜像时是否有清除/重置 wp-content/themes/my-theme 目录的方法?
感谢任何帮助,下面的代码示例。
Dockerfile:
FROM wordpress:latest
COPY ./my-thtme /usr/src/wordpress/wp-content/themes/my-theme
永久卷声明:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wordpress
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
storageClass: "nfs"
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
spec:
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
imagePullSecrets:
- name: gitlab-auth
containers:
- name: wordpress
image: registry.gitlab.com/user/wordpress:1234
imagePullPolicy: IfNotPresent
env:
- name: WORDPRESS_DB_HOST
value: wordpress-mysql
- name: WORDPRESS_DB_USER
value: mysql_wordpress
- name: WORDPRESS_DB_NAME
value: wordpress
- name: WORDPRESS_DB_TABLE_PREFIX
value: _wp
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: mysql-password
volumeMounts:
- name: wordpress-data
mountPath: /var/www/html/wp-content
ports:
- name: http
containerPort: 80
protocol: TCP
volumes:
- name: wordpress-data
persistentVolumeClaim:
claimName: wordpress
【问题讨论】:
-
Kubernetes 不会对卷的内容做任何事情;如果你想在升级时有一些特定的行为,你需要自己在容器代码中实现它。
-
如果在Pod 中的应用容器启动之前存在,可以使用
initContainer从持久卷中清除文件。
标签: wordpress docker kubernetes gitlab