[英]Helm + Kubernetes, load and enable extensions or modules in PHP
當我使用 kubernetes 運行 php 部署時遇到問題,因為不加載模塊或擴展庫。
我的部署文件是這樣的:
apiVersion: apps/v1
kind: Deployment
metadata:
name: php
labels:
app: php
spec:
selector:
matchLabels:
app: php
replicas: 1
template:
metadata:
labels:
app: php
spec:
containers:
- name: php
image: php:7-fpm
env:
- name: PHP_INI_SCAN_DIR
value: :/usr/local/etc/php/conf.custom
ports:
- containerPort: 9000
lifecycle:
postStart:
exec:
command: ["/bin/sh","-c","docker-php-ext-install pdo pdo_mysql mysqli && docker-php-ext-enable pdo pdo_mysql mysqli"]
volumeMounts:
- name: php-conf
mountPath: /usr/local/etc/php/conf.custom
volumes:
- name: php-conf
configMap:
name: php
我的 ConfigMap 是這樣的:
apiVersion: v1
kind: ConfigMap
metadata:
name: php
labels:
app: php
data:
wordpress-custom.ini: |-
upload_max_filesize = 100M
post_max_size = 100M
default.ini: |-
extension=pdo_mysql.so
extension=mysqli.so
后來我使用命令“exec -it”進入Pod,我再次輸入“docker-php-ext-enable mysqli”來檢查它,但我收到消息“警告:mysqli(mysqli.so)已經加載!” ,但是當我運行“phpinfo()”命令時,我看到“upload_max_filesize = 100M”和“post_max_size = 100M”已更新,但我看不到啟用的模塊。
我可以做什么? 很感謝
問題是你的docker CMD是運行php-fpm
容器啟動后,您無法更改加載到內存的 php 配置。
您需要重新啟動 php-fpm 以應用更改,但重新啟動會殺死容器並且您會丟失所有更改。 要為 php 添加一些庫,您應該創建自己的 docker 映像並將所有庫安裝到映像中,而不是在運行時安裝它。
在 github https://github.com/docker-library/php/issues/331上也檢查這個問題
所以答案是創建自己的映像並使用 docker RUN 命令安裝所有必需的擴展
FROM php:7-fpm
RUN apt-get install php-pdo php-mysql
之后,您必須構建此映像
docker build -t php:7-fpm-mysql .
將其推送到某個 docker 注冊表。 例如 hub.docker.com
docker push php:7-fpm-mysql
注意:自 PHP 5.5.* 起不推薦使用 php mysql 擴展,請改用 PDO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.