Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux(Windows,MacOS) 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

一、安装nginx、php、mysql镜像

docker pull nginx:latest

docker pull php:5.6-fpm

docker pull php:5.6-cli

docker pull mysql:5.6.46

docker pull phpmyadmin/phpmyadmin

使用命令 docker images 查看本地镜像:

REPOSITORY TAG IMAGE ID CREATED SIZE

nginx latest c7460dfcab50 5 hours ago 126MB

phpmyadmin/phpmyadmin latest fcf3beee74b9 47 hours ago 458MB

mysql 5.6.46 f7ba8643e01a 12 days ago 302MB

php 5.6-fpm 3458979c7744 11 months ago 344MB

php 5.6-cli 36c3c974e6ee 11 months ago 344MB

善用 docker search 命令来查看可用版本。

https://www.runoob.com/docker/docker-search-command.html

二、运行、停止、删除容器

可以执行命令 docker container ls (或docker ps)或者 docker container ls -all(或docker ps -a),来查看已启动的容器或者所有容器。

docker run --name xu-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.6.46

docker run --name xu-phpmyadmin -d --link xu-mysql:db -p 8081:80 phpmyadmin/phpmyadmin

# 访问http://127.0.0.1:8081/,使用root/123456账号信息登录管理mysql

docker run --name xu-php-fpm5.6 -v ~/code/docker/nginx/www:/www -d php:5.6-fpm

下面Nginx + PHP:

docker run --name xu-nginx -p 8080:80 -d -v ~/code/docker/nginx/www:/usr/share/nginx/html -v ~/code/docker/nginx/conf/conf.d/:/etc/nginx/conf.d --link xu-php-fpm5.6:php nginx

参考:

https://www.runoob.com/docker/docker-install-php.html

https://hub.docker.com/_/php

当把web程序代码放入 ~/code/docker/nginx/www 后,在浏览器打开http://127.0.0.1:8080/,提示:

您的服务器环境不支持gd扩展,将无法使用验证码!

容器的停止、删除,如下:

docker stop 027c0f432aae # 此外对应的容器id

docker rm 027c0f432aae

查看mysql容器的ip地址,连接数据库时用得上:

docker inspect --format=‘{{.NetworkSettings.IPAddress}}‘ xu-mysql

三、安装php扩展gd库

如果之前启用了 gd,需要先在 php.ini 文件中注释掉 extension=gd.so 并重启容器。

进入php容器:

docker exec -it /bin/bash

可把软件源修改为国内某镜像站源,例如容器软件源 /etc/apt/sources.list 修改为网易镜像站源,以stretch为例:

# 先做备份:

mv /etc/apt/sources.list /etc/apt/sources.list.bak

# 再创建编辑 /etc/apt/sources.list

deb http://mirrors.163.com/debian/ stretch main contrib non-free contrib

deb http://mirrors.163.com/debian/ stretch-updates main contrib non-free contrib

deb http://mirrors.163.com/debian/ stretch-backports main contrib non-free contrib

编辑器推荐安装 vim,默认没有安装,请先执行 apt-get update,再安装 apt-get install vim,但是往往矛盾的是,我如果能够快速更新并安装的话,就用不着换源了,所以使用最基本的命令“echo”:

# 依次执行:

echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >/etc/apt/sources.list

echo "deb http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list

# 更新软件源

apt update

# 安装各种库

apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev

# 解压源码

docker-php-source extract

# 进入gd源码文件夹

cd /usr/src/php/ext/gd

# 准备编译

docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2

# 编译安装

docker-php-ext-install gd

# 检查扩展是否安装成功

php -m | grep gd

# 退出php容器终端

exit

# 重启php容器

……

如果网站图形验证码还显示不出来,报错如下:

Fatal error: Call to undefined function core\extend\code\imagettftext()

按照以下步骤进行:

docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include

重新编译:

docker-php-ext-install gd

如果报错:

configure: error: freetype-config not found.

运行: apt install libfreetype6-dev ,然后再继续运行上面的命令。

gd库中有了freetype,则验证码显示正常了。

同理,如果提示没有mysqli扩展,执行 docker-php-ext-install mysqli 命令再重启php容器即可。

四、扩展知识

1、docker-php-source

此命令在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件而已。我们就把它当作一个从互联网中下载下来的PHP扩展源码的存放目录即可。事实上,所有PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。

格式:

docker-php-source extract | delete

参数说明:

* extract : 创建并初始化 /usr/src/php目录

* delete : 删除 /usr/src/php目录

2、docker-php-ext-enable

这个命令是用来启动 PHP扩展 的。我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。

3、docker-php-ext-install

这个命令是用来安装并启动PHP扩展的。

命令格式:

docker-php-ext-install “源码包目录名”

注意点:

“源码包“需要放在 /usr/src/php/ext 下

默认情况下,PHP容器没有 /usr/src/php这个目录,需要使用 docker-php-source extract来生成。

docker-php-ext-install 安装的扩展在安装完成后,会自动调用docker-php-ext-enable来启动安装的扩展。

卸载扩展,直接删除/usr/local/etc/php/conf.d 对应的配置文件即可。

原文:https://www.cnblogs.com/xusx2014/p/12181916.html

docker php安装gd扩展_docker安装php扩展gd库相关推荐

  1. docker安装mysql指定_Docker安装MySql,并且使用外部客户端链接

    本篇博客主要记录在centos7当中安装mysql,并且安装完成之后使用外部客户端链接. 一.查看docker环境是否正常 在命令行使用docker search mysql: 如果能查出来证明doc ...

  2. docker仓库mysql所有版本_Docker 安装 MySQL8.0

    环境:MacOS_Cetalina_10.15.1.Mysql8.0.18.Docker_2.0.0.3 1.docker仓库搜索mysql docker search mysql 2.docker仓 ...

  3. docker安装mysql主从_docker安装mysql主从

    docker安装mysql主从 启动主库: 1.docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5 ...

  4. docker php安装gd扩展_docker php 容器安装GD库

    用thinkphp 5 Image库,创建缩略图报错:Call to undefined function imagecreatefromjpeg(),度娘一下发现是php 环境没有配置GD库扩展,因 ...

  5. docker php安装gd扩展_Docker php安装扩展步骤

    演示docker-php-source , docker-php-ext-install ,docker-php-enable-docker-configure 这四个命令到底是用来干嘛的,它们在PH ...

  6. Docker安装PHP-FPM5.6 (自带redis扩展,Mysql扩展,GD库扩展(支持JEPG))

    打包一个安装好reids扩展,GD库扩展,mysql扩展的PHP-FPM(php 5.6)版本,镜像地址及安装步骤如下 1,下载镜像: docker pull zlilizh/phpfpm5.6:la ...

  7. docker php安装gd扩展_php安装redis扩展

    前言 本文假定已经通过编译安装php程序,如果您是通过其他方式安装的php,实现方式可能有所不同. 运行环境:Centos 7.4.PHP7.2.x. 教程 安装redis 可以通过 PEAR / P ...

  8. docker nginx安装模块_docker安装nginx与php7.1

    1.下载安装nginx docker pull nginx 2.启动nginx容器 docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PW ...

  9. docker做mysql分布式_docker安装WordPress-web mysql分布式安装

    docker安装WordPress-web mysql分布式安装 发布时间:2020-06-17 23:23:20 来源:51CTO 阅读:224458 作者:九月朦胧 栏目:云计算 1.下载php- ...

最新文章

  1. 视频数据:深度数据采集(Depth Data)
  2. C语言定义code报错,C语言报错整理大全
  3. Jinja的基础知识
  4. Hexo 博客自定义一个不使用主题模板渲染的独立页面
  5. linux 双网卡 debian,Linux服务器双网卡双IP和单网卡双IP配置方法(Debian/Ubuntu)
  6. 107 岁的 IBM 以 340 亿美元吞下了 25 岁的“小”红帽!
  7. C语言学习笔记--数组指针和指针数组
  8. 我们不知道我们不知道:用同化项目做网络安全
  9. SpringMVC、SpringBoot拦截器的实现和原理
  10. HTML、CSS制作小米商城网页首页源码解析
  11. 不谋一时不足以谋一域_请问不谋万世者不足谋一时,不谋全局者,不足谋一域,接下来是什么?这段话太精辟了,能不能把全文发送过来?...
  12. php实现五维雷达图,【数据可视化·图表篇】雷达图
  13. 2021年六级英文作文:China’s achievement in higher education.
  14. 磨金石教育摄影技能干货分享|什么是序列摄影?它让摄影更加深刻
  15. 【Centos】EFAK(kafka-eagle)对ZK、Kafka可视化管理工具容器化安装与配置
  16. 高质量程序设计指南:C++/C语言
  17. 电子科技大学计算机专业分班,关于电子科技大学中山学院2018年大类招生及专业分班原则的说明...
  18. 高中数学怎么学好高中数学零基础怎么学
  19. 实验吧CTF练习题---安全杂项---异性相吸解析
  20. ES(elasticsearch)中遇到elasticsearch.keystore的问题,已解决!!!

热门文章

  1. python写入csv中文乱码
  2. Visual C 计算机语言函数应用,Visual C 程序设计
  3. MySQL安装步骤以及配置
  4. Shader学习(9)法线和切线空间的定义和变换演示
  5. 【黑马讲义】C++提高编程
  6. Centos7配置PPTP共享网络
  7. 麒麟820也迎来鸿蒙系统,鸿蒙OS2.0第二期第三期公测机型陆续公布麒麟980和麒麟820将登场...
  8. 关于将银河麒麟系统部署在云平台上面命令无法使用的问题
  9. python语言特点可读性_python语言的特点是什么?python语言好学吗?
  10. 山地车和公路车怎么选