准备镜像

我使用的centos系统,docker-ce最新版本。

先准备好三个镜像

docker pull mysql:5.7

docker pull php:5.6-fpm

docker pull nginx:latest

注意,mysql和php不要使用最新版本,坑很多。

docker images #查看镜像

一、构建mysql容器

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=ziqin666-v /mysql:/var/lib/mysql --name your_mysql mysql:5.7

配置容器(进入容器)

docker exec -it your_mysql bash

进入之后,要对用户进行授权,以便使用远程连接

连接mysql 输入密码:ziqin666 执行如下命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'ziqin666'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'ziqin666'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'ziqin666'; FLUSH PRIVILEGES;

此时可以使用客户端连接一下看看。(一定要把安全组规则对应端口打开)

二、构建php-fpm容器

准备工作

php.ini 默认是不存在的

在/home/app/phpfile文件夹下创建 php.ini文件和conf.d文件夹

创建容器

docker run -p 9000:9000 --name your_phpfpm \ -v /home/app/html:/var/www/html \ -v /home/app/phpfile:/usr/local/etc/php \ --link your_mysql:mysql \ -d php:5.6-fpm

安装 pdo 以便后边测试数据库连接,在docker容器中可以这样来安装

docker-php-ext-install pdo_mysql

安装其他插件也可以使用这种办法

并加入到php.ini

extension=php_curl.dll

extension=php_gd2.dll

extension=php_mysql.dll extension=php_mysqli.dll extension=php_pdo_mysql.dll extension=php_pdo_odbc.dll extension=php_pdo.dll

如果插件还不够就需要自己定制镜像

FROM php:7.0.12-fpm MAINTAINER Tairy WORKDIR /working RUN apt-get update --fix-missing && apt-get install -y \ g++ autoconf bash git apt-utils libxml2-dev libcurl3-dev pkg-config \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && docker-php-ext-install iconv curl mbstring \ xml json mcrypt mysqli pdo pdo_mysql zip \ && docker-php-ext-configure gd \ --with-gd \ --with-freetype-dir=/usr/include/ \ --with-png-dir=/usr/include/ \ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install gd \ && docker-php-ext-enable gd \ && pecl install /pecl/redis-3.0.0.tgz \ && docker-php-ext-enable redis \ && apt-get purge -y --auto-remove \ && rm -rf /var/cache/apt/* \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /pecl

三、安装nginx

配置文件目录:/home/app/nginx/conf.d

在配置文件目录新建 default.conf

server

{

listen 80;

server_name localhost;

location / {     root /usr/share/nginx/html;     index index.html index.htm;   }   location ~ \.php$ {     fastcgi_pass your_phpfpm:9000; #此处写docker里边php 的名称: your_phpfpm     fastcgi_index index.php;     fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;     include fastcgi_params;   }   error_page 500 502 503 504 /50x.html;   location = /50x.html {     root /usr/share/nginx/html;   } }

创建容器

docker run -p 81:80 --name your_nginx \ -v /home/app/nginx/www:/usr/share/nginx/html \ -v /home/app/nginx/conf.d:/etc/nginx/conf.d \ --link your_phpfpm:phpfpm \ -d nginx:latest

映射容器中的phpfpm和mysql都为固定,不能修改!

这里需要配置nginx使用用户,即把/etc/nginx/nginx.conf里的nginx用户修改为www-data,同时把/home/app/nginx/www下的文件所有者改为www-data:www_data,否则访问会有权限问题

chown -R www-data:www-data www

四 、 测试

1、查看服务

docker ps -a

STATUS 皆为up ,即运行中

2、测试 php解析

在宿主机 /home/app/nginx/www/目录下修改 index.php 文件。

3、测试mysql 链接

修改 index.php

//echo phpinfo();

$dbms='mysql'; //数据库类型 $host='your_mysql'; //数据库主机名,此处写mysql 容器的名字 $dbport = '3306'; $dbName='mysql'; //使用的数据库 $user='root'; //数据库连接用户名 $pass='123456'; //对应的密码 $dsn="$dbms:host=$host;port=$dbport;dbname=$dbName"; try { $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象 echo "successful
"; //你还可以进行一次搜索操作 // foreach ($dbh->query('SELECT * from user') as $row) { // print_r($row); //你可以用 echo($GLOBAL); 来看到这些值 // } $dbh = null; } catch (PDOException $e) { die ("Error!: " . $e->getMessage() . "
"); }

访问ip , 到正确的输出,就证明我们的配置成功了。

php mysql 容器_docker下搭建MySQL+php-fpm+nginx容器环境相关推荐

  1. docker登录mysql数据库_Docker下搭建mysql数据库

    1.获取官方镜像:[root@Centos7 mysql]# docker pull mysql/mysql-server:latest latest: Pulling from mysql/mysq ...

  2. liunx下搭建mysql主从_linux下搭建mysql主从

    在master上创建repl账户,用于复制. grant replication slave on *.* to [email protected]%' identified by 'P@$$W0rd ...

  3. .nwt+core+2.0+mysql_Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境

    一.Linux .NET Core简介 一直以来,微软只对自家平台提供.NET支持,这样等于让这个"理论上"可以跨平台的框架在Linux和macOS上的支持只能由第三方项目提供(比 ...

  4. win10注册mysql服务_win10下搭建MySQL服务

    1.下载MySQL安装包 滑动到页面底部,官网提供了不同电脑位数(32/64位)的下载版本,我的电脑是win10-64位的,选择对应版本下载解压包. 如果你没有注册登录下载页面时,官网会提示你注册一个 ...

  5. windows下搭建mysql集群_Windows下搭建MySQL集群

    本文将讨论在Windows下搭建MySQL集群的步骤和搭建过程中应当注意的问题. 由于机器数量和性能有限,搭建环境为一台宿主机(IP:10.200.178.191),一台虚拟机(IP:10.200.1 ...

  6. 在Win7虚拟机下搭建Hadoop2.6.0伪分布式环境

    近几年大数据越来越火热.由于工作需要以及个人兴趣,最近开始学习大数据相关技术.学习过程中的一些经验教训希望能通过博文沉淀下来,与网友分享讨论,作为个人备忘. 第一篇,在win7虚拟机下搭建hadoop ...

  7. Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440

    Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440 参考: http://hi.baidu.com/jiyeqian/blog/item/f46d2 ...

  8. Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440

    Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440 分类: LINUX 2011-10-18 16:44:56 因为在搭建ARM的qte环境时 ...

  9. mysql redis 中间件_Docker快速搭建Mysql社区版,Redis,MongoDb、MQ等等中间件。

    一:安装docker社区版. Centos系列(最好用7以上的版本,docker需要3.1以上的linux内核版本) sudo yum install docker-ce docker-ce-cli ...

  10. linux mysql 邮件_linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件...

    linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件 使用虚拟用户收发邮件安装 九.安装Courier authentication lib ...

最新文章

  1. 支持向量机svm的完整实现并配有解析
  2. python调用gitlab api自动合并分支_Python3使用 GitLab API 进行批量合并分支
  3. C# 操作redis
  4. FusionCharts Free(3)
  5. jquery的animate()方法也可设置非css属性
  6. python中字典长度可变吗_Python:如何给字典分配一个长度可变的列表值?
  7. php 执行多个文件,PHP提高执行多个查询时读取一千行文件的性能
  8. Salt-Syndic
  9. python初学者怎么入门-终于晓得python入门后怎么学精
  10. Yoga安装Ubuntu后,wifi和亮度调节问题
  11. 20170907wdVBA_ImportPicturesBaseOnExcel
  12. json数组对象转js数组对象
  13. 怎么做好论文查重,分享几个重查方法
  14. python不区分大小写的列表比较_关于列表:不区分大小写’in’ – Python
  15. 使用FreeMarker导出固定格式word文档
  16. JavaScript实时监听歌曲播放进度显示对应歌词
  17. IOS 如何排除闪退和内存泄漏问题
  18. 数字图像处理(五)几何变换之图像平移、镜像、绕中心点旋转、缩放等
  19. 高并发与大流量解决方案
  20. 新一代的JAVAEE jakartaEE 容器实现 payara使用(二)

热门文章

  1. [转]div中放flash运行30秒钟后自动隐藏效果
  2. dateformat-参数表
  3. 创建标签等操作DOM的原生js API
  4. BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草(动态规划)
  5. 定义的form,宏等双击提示不存在的…
  6. Using Delegates with Data Readers to Control DAL Responsibility[转]
  7. 【AAAI会议】三位教父上演神仙打架,Hinton吐槽CNN就是个“垃圾”
  8. 资源 | 忘了Python关键语句?这份备忘录拯救你的记忆
  9. 【分类汇总】110 天以来的题解分类汇总
  10. 深度学习2.0-23.Keras高层接口之模型的加载与保存