如何使用 NGINX、PHP-FPM 在 docker-compose.yml 文件中加载 mysqli 扩展
Posted
技术标签:
【中文标题】如何使用 NGINX、PHP-FPM 在 docker-compose.yml 文件中加载 mysqli 扩展【英文标题】:How to load mysqli extension inside docker-compose.yml file with NGINX, PHP-FPM 【发布时间】:2019-11-27 20:59:16 【问题描述】:加载 docker-compose up 时,wordpress 在 url 上加载,但 mysqli_connect 函数未定义,因为没有扩展。
我尝试在fpm图片下添加以下内容
命令:“docker-php-ext-install mysqli”
我尝试将 Dockerfile 添加到包含
的 docker-compose.yml 文件的目录中version: "3"
services:
#database
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
# webserver
nginx:
image: nginx:latest
ports:
- "8080:80"
links:
- fpm
volumes:
- /Users/connergesbocker/Github/cbgesbocker/dotfiles/root/etc/nginx/conf.d/village.conf:/etc/nginx/conf.d/village.conf
- /Users/connergesbocker/WordPress:/WordPress
networks:
- wpsite
# phpmyadmin
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8888:8888"
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: wordpress
networks:
- wpsite
fpm:
image: php:5.6.20-fpm
ports:
- "90:9000"
# command: "docker-php-ext-install mysqli"
links:
- db
volumes:
- /Users/connergesbocker/WordPress:/WordPress
working_dir: "/"
networks:
- wpsite
networks:
wpsite:
volumes:
db_data:```
【问题讨论】:
【参考方案1】:您可以自定义您的 dockerfile 并在其中添加安装:
Dockerfile:
FROM php:5.6.20-fpm
RUN docker-php-ext-install mysqli
docker-compose.yaml 的一部分:
fpm:
build: .
image: myphp:1
ports:
- "90:9000"
# command: "docker-php-ext-install mysqli"
links:
- db
volumes:
- /Users/connergesbocker/WordPress:/WordPress
working_dir: "/"
networks:
- wpsite
【讨论】:
我必须稍微改变一下才能让它为我工作。我的docker-compose.yml
文件是version: '3'
,我做了:``` services: php: build: context: ./php ``` 相对于我的docker-compose.yml
,Dockerfile
位于./php/Dockerfile
【参考方案2】:
您的覆盖将安装扩展,但容器将在安装后停止,因为 php-fpm
不会通过覆盖 CMD
启动。将命令替换为以下命令。
command:
- /bin/sh
- -c
- |
docker-php-ext-install mysqli
echo "extension installed.....starting php-fpm........................................"
php-fpm
【讨论】:
这样做的缺点(相对于另一个答案单独的Dockerfile
)是它似乎每次我docker-compose up
时都会运行安装命令以上是关于如何使用 NGINX、PHP-FPM 在 docker-compose.yml 文件中加载 mysqli 扩展的主要内容,如果未能解决你的问题,请参考以下文章
如何在CentOS 6上通过YUM安装Nginx和PHP-FPM
如何在CentOS 6上通过YUM安装Nginx和PHP-FPM