繁体   English   中英

Kubernetes 部署中缺少 pdo_mysql PHP 扩展

[英]pdo_mysql PHP extension missing in Kubernetes Deployment

我目前正在将我的 Laravel 应用程序部署到 kubernetes 集群。 我使用相同的 docker 映像进行实际部署,并使用 Helm 通过 Gitlab 部署迁移作业。

问题:运行迁移作业失败,因为未启用 pdo_mysql 模块(php -m 中缺少)

须知:在本地使用相同的命令运行相同的容器docker run registry.gitlab.com/../master:TAG /bin/sh -c "php artisan:migrate" - 工作正常

集群中的应用程序容器也在工作,因此存在 pdo_mysql。

使用 supervisord 运行php some:command (需要 pdo_mysql)的调度程序也可以工作。

.env 文件对于所有容器都是相同的

部署文件(可以忽略 helm 变量)

    {{- if .Values.application.migrateCommand -}}
apiVersion: batch/v1
kind: Job
metadata:
  name: {{ template "trackableappname" . }}-db-migrate
  labels:
    app: {{ template "appname" . }}
    chart: "{{ .Chart.Name }}-{{ .Chart.Version| replace "+" "_" }}"
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
  annotations:
    "helm.sh/hook": pre-upgrade
    "helm.sh/hook-delete-policy": before-hook-creation
    "helm.sh/hook-weight": "0"
spec:
  template:
    metadata:
      labels:
        app: {{ template "appname" . }}
        release: {{ .Release.Name }}
    spec:
      restartPolicy: Never
      imagePullSecrets:
{{ toYaml .Values.image.secrets | indent 10 }}
      containers:
      - name: {{ .Chart.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        command: ["/bin/sh"]
        args: ["-c", "{{ .Values.application.migrateCommand }}"]
        imagePullPolicy: {{ .Values.image.pullPolicy }}
        {{- if .Values.application.secretName }}
        envFrom:
        - secretRef:
            name: {{ .Values.application.secretName }}
        {{- end }}
{{- end -}}

更新: helm install 。 --dry-run --debug

    ---
# Source: portal/templates/db-migrate-hook.yaml
apiVersion: batch/v1
    kind: Job
    metadata:
      name: cranky-seahorse-db-migrate
      labels:
        app: cranky-seahorse
        chart: "portal-0.3.0"
        release: cranky-seahorse
        heritage: Tiller
      annotations:
        "helm.sh/hook": pre-upgrade
        "helm.sh/hook-delete-policy": before-hook-creation
        "helm.sh/hook-weight": "0"
    spec:
      template:
        metadata:
          labels:
            app: cranky-seahorse
            release: cranky-seahorse
        spec:
          restartPolicy: Never
          imagePullSecrets:
              - name: gitlab-registry

          containers:
          - name: portal
            image: "gitlab.example.com/group/project:stable"
            command: ["/bin/sh"]
            args: ["-c", "sh migrate.sh"]
            imagePullPolicy: Always
---

问题的原因可能是正在加载的/var/www/html中的错误php.ini而不是正确的( exetension_dir设置错误),因此请检查它。

你可以运行:

RUN echo "extension=pdo_mysql" >> /usr/local/etc/php/php.ini \
 && service apache2 restart

这将启用扩展代码到php.ini并重新启动 apache2 以便加载新配置。

我发现的也是关于它的github主题。 您也可以尝试此解决方案。 我希望它会帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM