Docker环境下PHP GD Library缺失,如何安装?
如何在现有Docker Compose环境的PHP-FPM容器中安装GD库?
环境配置
当前使用的docker-compose.yaml内容如下:
version: "3.9" services: web: image: nginx:latest ports: - "8080:80" volumes: - ./src:/var/www/html - ./default.conf:/etc/nginx/conf.d/default.conf links: - php-fpm php-fpm: image: php:8-fpm volumes: - ./src:/var/www/html db: image: 'jc21/mariadb-aria:latest' restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: 'secretpassword.' MYSQL_DATABASE: 'secretdb' MYSQL_USER: 'secretuser' MYSQL_PASSWORD: 'secretpassword.' volumes: - ./data/mysql:/var/lib/mysql phpmyadmin: image: lscr.io/linuxserver/phpmyadmin:latest container_name: pma links: - db environment: PMA_ARBITRARY: 0 PMA_HOST: db PMA_PORT: 3306 restart: always ports: - 8085:80
解决方案
方式一:临时安装(容器重启后失效)
- 先查找php-fpm容器的名称或ID:
容器名称通常为docker ps{项目目录名}_php-fpm_1格式 - 进入容器内部:
docker exec -it <容器名称/ID> bash - 在容器内执行GD库安装命令:
apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev docker-php-ext-configure gd --with-freetype --with-jpeg docker-php-ext-install gd - 退出容器后重启php-fpm服务:
docker restart <容器名称/ID>
方式二:构建自定义镜像(持久化生效)
如果需要GD库在容器重启后依然保留,推荐使用自定义镜像:
- 在项目根目录创建
Dockerfile文件,内容如下:FROM php:8-fpm RUN apt-get update && apt-get install -y \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ && rm -rf /var/lib/apt/lists/* \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd - 修改
docker-compose.yaml中的php-fpm服务配置,替换image为build:php-fpm: build: . volumes: - ./src:/var/www/html - 重新构建并启动容器:
docker-compose up -d --build
内容的提问来源于stack exchange,提问作者Maddin
相关产品推荐
相关产品推荐

