[英]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.