一、安装 mysql

1 获取 mysql 镜像

docker pull  mysql:5.7

2 创建mysql的镜像,并运行

docker run -d -p : -e MYSQL_ROOT_PASSWORD=php@ --name codeforphp_mysql mysql:5.7

参数说明

  • -d 让容器在后台运行
  • -p 添加主机到容器的端口映射
  • -e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置
  • –name 容器的名字,随便取,但是必须唯一

ps: 其实我们可以仅仅使用docker run命令就行了。docker run会先去pull,然后再create。个人习惯先把镜像pull下来,在run的时候会很快。

3 进入mysql 终端

docker exec -it   codeforphp_mysql    bash

参数说明

  • -t 在容器里生产一个伪终端
  • -i 对容器内的标准输入 (STDIN) 进行交互

输入命令。进入

root@f489cae3f0f4:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 5.7. MySQL Community Server (GPL) Copyright (c) , , Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

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

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

此时可以使用客户端连接一下看看。注意,客户端连接端口为 3307

二、 安装PHP

1 拉取php镜像

docker pull php:7.1-fpm

2 创建phpfpm容器

php.ini 默认是不存在的,所以我们要做一些改变

在创建之前。需要自己建立一个映射文件夹以便存放

/var/nginx/www/phpfile   里边新建  php.ini 文件 和 conf.d 文件夹
docker run -d -v /var/nginx/www/html:/var/www/html   -v  /var/nginx/www/phpfile:/usr/local/etc/php    -p 9000:9000 --link codeforphp_mysql:mysql --name codeforphp_phpfpm php:7.1-fpm 

参数说明

  • -d 让容器在后台运行
  • -p 添加主机到容器的端口映射
  • -v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的
  • –name 容器的名字
  • –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。

这里如果不指定–link参数其实也是可以得,因为容易本身也是有ip的且唯一,所以我们也可以直接利用ip去访问容器。

3  进入到我们的容器,然后我们在/var/www/html目录下新建一个index.php文件

docker exec -it codeforphp_phpfpm bash

touch index.php

我们可以看到该目录下新建了一个php文件 
接下来我们回到我们的主机上面,访问一下我们主机上/var/nginx/www/html

我们发现我们在容器里的  /var/www/html   目录中新建的文件也在主机的   /var/nginx/www/html   目录中,因为在创建容器的时候,我们已经把主机中的目录挂载到了容器中去了。

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

docker-php-ext-install pdo_mysql

此时修改

/var/nginx/www/phpfile/php.ini 添加
extension=php_pdo.dll

重启phpfpm容器

docker  restart codeforphp_phpfpm

查看phpinfo

三、 安装nginx

1 拉取镜像

ps: 此处我没指定版本。默认使用 latest 标签

docker pull nginx:1.10.3

2创建映射目录和配置文件

文件存放目录: /var/nginx/www/html       配置文件目录:/var/www/nginx/conf.d

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

server
{
  listen 80;
  server_name localhost;


  location / {
    root /var/www/html;
    index index.html index.htm;
  }


  location ~ \.php$ {
    fastcgi_pass codeforphp_phpfpm:9000;  #此处写docker 里边 php 的名称: codeforphp_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 -d -p 80:80  -v /var/nginx/www/html:/var/www/html  -v /var/www/nginx/conf.d:/etc/nginx/conf.d     --link codeforphp_phpfpm:phpfpm --name codeforphp_nginx nginx:1.10.3

四、测试

1 查看服务

docker ps -a

STATUS 皆为up ,即运行中

2 测试PHP 解析:

在宿主机   /var/nginx/www/html 目录下新建index.php 文件。

<?php echo phpinfo();

访问:

3  测试 mysql 链接

修改index.php

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

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

【docker】 centos7 下 使用docker 安装 LNMP的更多相关文章

  1. Centos7下使用yum安装lnmp zabbix3.2

    1:配置epel-release mysql zabbix 源 配置epel源 wget http://mirrors.aliyun.com/epel/epel-release-latest-7.no ...

  2. Docker Centos7 下建立 Docker 桥接网络

    为什么要让docker桥接物理网络? docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是连接到docker0网卡上的.而docker0的ip段为172.1 ...

  3. [Docker]CentOS7下Docker安装教程

    想要倒腾Kubernetes的话,第一步就是要会安装Docker,这篇文章讲一讲过程 安装步骤 检查内核版本,必须是3.10以上 uname -r 安装Docker yum -y install do ...

  4. [Docker]CentOS7通过rpm包安装Docker

    前几天写过一篇文章:[Docker]CentOS7下Docker安装教程,直接使用yum命令下载Docker即可.但是前提是你需要***,所以这篇文章来讲讲,如果不会***,该如何安装Docker. ...

  5. Centos7下卸载docker

    最近发现某台机器上的Docker服务无法开启,报如下错误: [root@localhost ~]# docker ps -a Cannot connect to the Docker daemon. ...

  6. centos7下使用yum安装mysql

    CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 wget http://repo.mysql.com/m ...

  7. [转]Centos7下caffe的安装

    Centos7下caffe的安装 原文地址:http://blog.csdn.net/s2392735818/article/details/49796017   版权声明:本文为博主原创文章,未经博 ...

  8. centos7下搜狗输入法的安装教程

    相信用过centos自带的输入法的朋友都会感叹这也实在是太难用了吧,使用拼音打出来的词总是不能在前几个匹配到,即使是一些常用词也是如此,简直无法忍受跟个zz似的.吐槽完了,这里给出centos7下搜狗 ...

  9. centos7下使用yum安装pip

    centos7下使用yum安装pip 首先安装epel扩展源: yum -y install epel-release 更新完成之后,就可安装pip: yum -y install python-pi ...

  10. Centos7 下的SVN安装与配置

    Centos7 下的SVN安装与配置 1.关闭防火墙 临时关闭防火墙 systemctl stop firewalld 永久防火墙开机自关闭 systemctl disable firewalld 临 ...

随机推荐

  1. Java如何使用重载方法处理异常?

    在Java编程中,如何使用重载方法处理异常? 此示例显示如何使用重载方法来处理异常.需要在每个方法中使用try catch块. package com.yiibai; public class Exc ...

  2. JSONObject相关依赖架包下载(Maven依赖下载)

    一.开发场景Java开发当中经常需要Json格式的数据,这就用到JSONObject类,本文章只提供以下两种JSONObject对应架包的下载方式.1.com.alibaba.fastjson.JSO ...

  3. unity---gameScreen 的Stats参数

    Unity Stats 面板介绍 原创 2016年06月12日 10:06:12 1544 0 3 Time per frame and FPS (每帧的时间和FPS):处理和渲染一个游戏框架(以及由 ...

  4. Keystone中间件WSGI环境变量总结

    OpenStack keystonemiddleware接收前一个WSGI过滤器传来的WSGI环境信息,进行验证工作后传递给下一个中间件,本文探讨keystone中间件究竟有哪些WSGI环境变量. 说 ...

  5. QStandardItemModel角色控制及QTreeView添加不同的右键菜单

    http://blog.csdn.net/czyt1988/article/details/26018513

  6. linux下nginx配置ssl证书(https)

    nginx配置ssl很简单,首先需要两个文件,一个是crt文件,另一个是key文件,如下所示: xxx.crt;  #(证书公钥)xxx.key; #(证书私钥) 把这两个文件放到nginx的conf ...

  7. 关于HTTP Message

    HTTP Message包括JS, HTML等Resource.这些都是相对来说有代码可以写的东西,但是原理的东西是没有代码的.coding只是很少的一部分工作内容. Browser的流程.比如con ...

  8. 安卓开发笔记——ListView加载性能优化ViewHolder

    在前不久做安卓项目的时候,其中有个功能是爬取某网站上的新闻信息,用ListView展示,虽然做了分页,但还是觉得达不到理想流畅效果. 上网查阅了些资料,发现一些挺不错的总结,这里记录下,便于复习. 当 ...

  9. js 去掉重复数组

    js去掉重复数组 重点一:字符串转数组  strArr.join(',') 重点二:做循环数组删除的时候,每次循环就把color[i] 去对比i之前所有数组color组合起来的字符串 比如 : i=1 ...

  10. thinkphp3.2 控制器导入模型

    方法一: public function index(){ $Member = new MemberModel(); $money = $Member->Money(); print_r($mo ...