缺少对以下路径的写入权限:/var/www/html/pub/media
Missing write permissions to the following paths: /var/www/html/pub/media
kubectl -n magento logs magento-install-jssk6
我正在 Database found In ConfigModel.php line 166:Missing write permissions to the following paths: /var/www/html/pub/media
安装作业:
apiVersion: batch/v1
kind: Job
metadata:
name: magento-install
namespace: magento
spec:
template:
metadata:
name: install
labels:
app: magento-install
k8s-app: magento
spec:
containers:
- name: magento-setup
image: kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
command: ["/bin/sh"]
args:
- -c
- |
/bin/bash <<'EOF'
bin/install.sh
php bin/magento setup:perf:generate-fixtures setup/performance-toolkit/profiles/ce/small.xml
magerun index:list | awk '{print }' | tail -n+4 | xargs -I{} magerun index:set-mode schedule {}
magerun cache:flush
EOF
envFrom:
- configMapRef:
name: config
volumeMounts:
- mountPath: /var/www/html/pub/media
name: media
volumes:
- name: media
persistentVolumeClaim:
claimName: media
restartPolicy: OnFailure
and when I try to change permissions I am getting chown: changing
ownership of '/var/www/html/pub/media': Operation not permitted
这是因为您 运行 chown
作为 www-data
用户并且此目录的当前所有者是 root
.
您可以通过使用 init container 运行 as root
(用户 ID 0
)来解决您的问题。您可以在下方看到 magento-install
Job
的修改版本,其中已添加 init 容器:
apiVersion: batch/v1
kind: Job
metadata:
name: magento-install
namespace: magento
spec:
template:
metadata:
name: install
labels:
app: magento-install
k8s-app: magento
spec:
initContainers:
- name: magento-chown
securityContext:
runAsUser: 0
image: kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
command: ['sh', '-c', 'chown -R www-data:www-data /var/www/html/pub/media']
volumeMounts:
- name: media
mountPath: "/var/www/html/pub/media"
containers:
- name: magento-setup
image: kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
command: ["/bin/sh"]
args:
- -c
- |
/bin/bash <<'EOF'
bin/install.sh
php bin/magento setup:perf:generate-fixtures setup/performance-toolkit/profiles/ce/small.xml
magerun index:list | awk '{print }' | tail -n+4 | xargs -I{} magerun index:set-mode schedule {}
magerun cache:flush
EOF
envFrom:
- configMapRef:
name: config
volumeMounts:
- mountPath: /var/www/html/pub/media
name: media
volumes:
- name: media
persistentVolumeClaim:
claimName: media
restartPolicy: OnFailure
一旦您使用以下方式附加到新创建的 Pod
:
kubectl exec -ti -n magento magento-install-z66qg -- /bin/bash
您会看到 /var/www/html/pub/media
目录的当前所有者不再是 root
,而是 www-data
用户:
www-data@magento-install-z66qg:~/html$ ls -ld /var/www/html/pub/media
drwxr-xr-x 3 www-data www-data 4096 Jul 27 18:45 /var/www/html/pub/media
我们可以进一步简化它。 init 容器 甚至不需要使用 kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
图像。它也可能是一个基于 busybox
的简单容器,默认情况下 运行 与 root
相同,因此您可以省略上一个示例和 initContainers
部分中的安全上下文将如下所示:
initContainers:
- name: magento-chown
image: busybox
command: ['sh', '-c', 'chown -R www-data:www-data /var/www/html/pub/media']
volumeMounts:
- name: media
最终效果完全一样
kubectl -n magento logs magento-install-jssk6
我正在 Database found In ConfigModel.php line 166:Missing write permissions to the following paths: /var/www/html/pub/media
安装作业:
apiVersion: batch/v1
kind: Job
metadata:
name: magento-install
namespace: magento
spec:
template:
metadata:
name: install
labels:
app: magento-install
k8s-app: magento
spec:
containers:
- name: magento-setup
image: kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
command: ["/bin/sh"]
args:
- -c
- |
/bin/bash <<'EOF'
bin/install.sh
php bin/magento setup:perf:generate-fixtures setup/performance-toolkit/profiles/ce/small.xml
magerun index:list | awk '{print }' | tail -n+4 | xargs -I{} magerun index:set-mode schedule {}
magerun cache:flush
EOF
envFrom:
- configMapRef:
name: config
volumeMounts:
- mountPath: /var/www/html/pub/media
name: media
volumes:
- name: media
persistentVolumeClaim:
claimName: media
restartPolicy: OnFailure
and when I try to change permissions I am getting chown: changing ownership of '/var/www/html/pub/media': Operation not permitted
这是因为您 运行 chown
作为 www-data
用户并且此目录的当前所有者是 root
.
您可以通过使用 init container 运行 as root
(用户 ID 0
)来解决您的问题。您可以在下方看到 magento-install
Job
的修改版本,其中已添加 init 容器:
apiVersion: batch/v1
kind: Job
metadata:
name: magento-install
namespace: magento
spec:
template:
metadata:
name: install
labels:
app: magento-install
k8s-app: magento
spec:
initContainers:
- name: magento-chown
securityContext:
runAsUser: 0
image: kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
command: ['sh', '-c', 'chown -R www-data:www-data /var/www/html/pub/media']
volumeMounts:
- name: media
mountPath: "/var/www/html/pub/media"
containers:
- name: magento-setup
image: kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
command: ["/bin/sh"]
args:
- -c
- |
/bin/bash <<'EOF'
bin/install.sh
php bin/magento setup:perf:generate-fixtures setup/performance-toolkit/profiles/ce/small.xml
magerun index:list | awk '{print }' | tail -n+4 | xargs -I{} magerun index:set-mode schedule {}
magerun cache:flush
EOF
envFrom:
- configMapRef:
name: config
volumeMounts:
- mountPath: /var/www/html/pub/media
name: media
volumes:
- name: media
persistentVolumeClaim:
claimName: media
restartPolicy: OnFailure
一旦您使用以下方式附加到新创建的 Pod
:
kubectl exec -ti -n magento magento-install-z66qg -- /bin/bash
您会看到 /var/www/html/pub/media
目录的当前所有者不再是 root
,而是 www-data
用户:
www-data@magento-install-z66qg:~/html$ ls -ld /var/www/html/pub/media
drwxr-xr-x 3 www-data www-data 4096 Jul 27 18:45 /var/www/html/pub/media
我们可以进一步简化它。 init 容器 甚至不需要使用 kiweeteam/magento2:vanilla-2.3.4-php7.3-fpm
图像。它也可能是一个基于 busybox
的简单容器,默认情况下 运行 与 root
相同,因此您可以省略上一个示例和 initContainers
部分中的安全上下文将如下所示:
initContainers:
- name: magento-chown
image: busybox
command: ['sh', '-c', 'chown -R www-data:www-data /var/www/html/pub/media']
volumeMounts:
- name: media
最终效果完全一样