我如何使用 mysqli_conect 和 docker-compose in php

How can I use mysqli_conect with docker-compose in php

我有以下 docker-compose 脚本:

version: '3'
services:
    nginx:
        restart: unless-stopped
        image: staticfloat/nginx-certbot
        ports:
            - 80:80/tcp
            - 443:443/tcp
        environment:
            CERTBOT_EMAIL: owner@company.com
        links:
          - php
        volumes:
          - ./conf.d:/etc/nginx/user.conf.d:ro
          - letsencrypt:/etc/letsencrypt
          - ./workspace:/var/www/html

    php:
        image: php:7.4-fpm
        links:
          - docker-mysql
        volumes:
          - ./workspace:/var/www/html/
          - ./php:/usr/local/etc/php/php.ini

    docker-mysql:
        image: mysql:5.7
        container_name: docker-mysql
        restart: always
        environment:
          - MYSQL_DATABASE=bla
          - MYSQL_ROOT_PASSWORD=bla
          - MYSQL_USER=bla
          - MYSQL_PASSWORD=bla
        ports:
          - "3306:3306"
        volumes:
          - ./dbdata:/var/lib/mysql

我面临的问题如下:

Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in ...

我该怎么做才能让 mysqli 正常工作?我已经尝试查看 Dockerhub 上的文档,但没有找到任何我理解的内容。 我也已经尝试 运行 docker-php-ext-install mysqli 在 php 容器内,但没有成功。它说模块已安装,但是当 运行ning phpinfo.

时我看不到它被激活

您可以在 PHP 的 Dockerfile 中添加 mysqli 扩展。 您需要创建 Dockerfile 并在其中使用此命令:

RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

在您的 docker-compose.yml 中指定 PHP 的 Dockerfile(而不是“image”)

php:
    build:
      dockerfile: Dockerfile

当然不是完整的Dockerfile,google《Dockerfile PHP7.4 fpm示例》