Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
舵手+;Kubernetes,在PHP中加载并启用扩展或模块_Php_Docker_Kubernetes_Php Extension_Kubernetes Helm - Fatal编程技术网

舵手+;Kubernetes,在PHP中加载并启用扩展或模块

舵手+;Kubernetes,在PHP中加载并启用扩展或模块,php,docker,kubernetes,php-extension,kubernetes-helm,Php,Docker,Kubernetes,Php Extension,Kubernetes Helm,我在使用kubernetes运行php部署时遇到了问题,因为我没有加载模块或扩展库 我的部署文件如下: apiVersion: apps/v1 kind: Deployment metadata: name: php labels: app: php spec: selector: matchLabels: app: php replicas: 1 template: metadata: labels: app:

我在使用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
我的配置图是:

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上也检查这个问题

所以,答案是创建自己的映像,并使用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

注意:自PHP5.5以来,php mysql扩展已被弃用。*,请改用PDO

如何检查phpinfo()?通过网络?问题是docker CMD要运行php fpm,在容器启动后,无法更改加载到内存的php配置。您需要重新启动php fpm来应用更改,但重新启动会杀死容器,并且会丢失所有更改。要为php添加一些库,您应该创建自己的docker映像,并将所有库安装到映像中,而不是在运行时安装。是的,我确实通过web进行了检查。上传到docker hub正是我想要避免的,哈哈,但我理解你。。谢谢'u@panoptiktank'u@Panoptik,你知道一些免费主机和多个私有docker存储库的网站吗?如果你做一些常见的更改,比如安装lib,你可以将此图像存储到公共注册表。至于我,我既使用私人dockerhub注册中心支付费用,也使用我自己的私人注册中心,我将切换到它。如果您有本地网络,您可以使用docker docker run-d--restart=always--name registry-v~/certs:/data/certs-v~/data/registry/config:/etc/docker/registry-v/data/registry/storage:/var/lib/registry-p 5000:5000 registry:2非常有趣。。。我会搜索更多关于它的信息,非常感谢!还记得gitlab注册表功能。我相信它的云版本为私有回购提供了免费的私有注册