You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose YAML配置下PHP扩展安装失败问题排查求助

Docker中PHP扩展安装失效问题排查与解决

核心问题分析

你的配置存在几个关键错误,直接导致PHP扩展无法生效:

1. Docker Compose镜像覆盖问题

apache_test服务中同时指定了build和image: php:7.4-apache,这会让Docker忽略你构建的自定义镜像,直接使用官方的php:7.4-apache镜像运行容器,你在Dockerfile中安装的GD、Zip等扩展自然不会生效。

2. Build上下文路径错误

build.context设置为./Dockerfile是错误的,context需要指向Dockerfile所在的目录(而非文件路径),否则构建过程会失败或无法正确读取文件。

3. 网络配置不一致

database_test和phpmyadmin_test服务指定的网络是mastercard_network,但在networks段定义的网络名称是test_network,这会导致容器间网络不通,phpmyadmin无法连接数据库。

4. PHPMyAdmin主机配置错误

phpmyadmin_test的PMA_HOST设置为database_mastercard,但实际数据库服务名称是database_test,会导致连接失败。

修正后的配置文件

修正版Dockerfile(添加Zip扩展支持)

FROM php:7.4-apache
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libzip-dev \
        zip \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd zip \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

修正版docker-compose.yml

version: '3'

services:
    apache_test:
        container_name: apache_test
        build:
            context: .
            dockerfile: Dockerfile
        # 移除官方镜像指定,使用构建后的自定义镜像
        restart: always
        dns:
            - 8.8.8.8
            - 4.4.4.4
            - 122.28.0.0
        ports:
            - "83:80"
        volumes:
            - $HOME/projects/test:/www/test/
            - ./apache2.conf:/etc/apache2/sites-enabled/vhost.conf
            - ./php.ini:/usr/local/etc/php/php.ini
        networks:
            test_network:
                ipv4_address: 122.28.1.1
    database_test:
        container_name: database_test
        image: mysql:5.7
        restart: always
        ports:
            - "3310:3306"
        environment:
            - MYSQL_ROOT_PASSWORD=abc123
        networks:
            test_network:
                ipv4_address: 122.28.1.2
        command: mysqld --max_allowed_packet=256M
    phpmyadmin_test:
        image: phpmyadmin/phpmyadmin:4.8.4
        restart: always
        ports:
            - "8180:80"
        environment:
            MYSQL_ROOT_PASSWORD: abc123
            PMA_HOST: database_test
        networks:
            test_network:
                ipv4_address: 122.28.1.3
        links:
            - database_test
volumes:
  data:
    driver: local            
networks:
    test_network:
        ipam:
            driver: default
            config:
                - subnet: 122.28.0.0/16 

验证方法

  1. 重新构建并启动容器:
docker-compose down && docker-compose build --no-cache && docker-compose up -d
  1. 进入apache容器验证扩展是否生效:
docker exec -it apache_test php -m

查看输出中是否包含gd和zip字样,确认扩展已安装。

内容的提问来源于stack exchange,提问作者Xavier Issac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:30:44