gpt4 book ai didi

docker - 如何通过 unix socket 在 Kubernetes 中运行 PHP?

转载 作者:行者123 更新时间:2023-12-02 11:34:19 25 4
gpt4 key购买 nike

我在 Google Container Engine 中有 nginx 和 php-fpm 容器,我想通过 unix socket 而不是网络来运行它。

我还有 Google SQL 代理容器,它使用空卷通过放置在与其他容器共享的卷上的套接字提供与 Google SQL 数据库的连接。所以我想对 PHP 使用相同的方法,但它不起作用。

我有安装到 php 和 nginx 容器的 emptyDir 类型的空卷。卷已安装,我可以在两个容器中看到它。但是,如果我尝试使用 nginx,我会在日志中找不到 (socket) 文件。

我还将 www-data(与 php 容器中的 uid 相同)用户添加到 nginx 容器中,并将其设置在 nginx conf 中,但没有帮助。

谷歌 SQL 代理在某些方面是否特殊,我必须使用网络来处理 PHP 还是我在这里遗漏了什么?

最佳答案

我设法使您描述的方法起作用。我用的是 emptyDirdeployment所以一个共享/sock文件夹被挂载到 nginx 和 fpm:

  - name: fpm
...
volumeMounts:
- name: php-socket
mountPath: /sock
...

- name: nginx
...
volumeMounts:
- name: php-socket
mountPath: /sock
...

volumes:
- name: php-socket
emptyDir: {}

我发现这篇文章对实际的 nginx 和 fpm 配置很有帮助: https://medium.com/@shrikeh/setting-up-nginx-and-php-fpm-in-docker-with-unix-sockets-6fdfbdc19f91

我遇到的问题是我的 php-fpm docker 容器配置中的一个文件,名为 zz-docker.conf其中包含 listen = [::]:9000 .由于文件的名称按字母顺序排列,它正在破坏我的其他配置文件,停止 unix socket 通信工作(即 listen = /sock/php.sock )。我在 Dockerfile 中使用它删除了问题行:
sed -i -e ‘/listen/d’ /usr/local/etc/php-fpm.d/zz-docker.conf

关于docker - 如何通过 unix socket 在 Kubernetes 中运行 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40758576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com