centos7 下 使用docker 安装 LNMP

一、安装 mysql

1 获取 mysql 镜像

docker pull  mysql:5.7

2 创建mysql的镜像,并运行

docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=php@666 --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 3
Server version: 5.7.22 MySQL Community Server (GPL) Copyright (c) 2000, 2018, 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 = '3306';
$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  , 到正确的输出,就证明我们的配置成功了。

该文章转载至  https://www.cnblogs.com/richerdyoung/p/9198397.html

使用docker 安装 LNMP的更多相关文章

  1. centos 7使用docker安装lnmp和redis环境

    #================Docker基础操作========================== #启动docker服务service docker start#搜索可用docker镜像#h ...

  2. docker 安装 lnmp

    docker 安装 lnmp 标签(空格分隔): php,docker 安装MySql 1 搜索镜像 docker search mysql 2 安装镜像 docker pull mysql:5.7 ...

  3. docker安装lnmp 环境

    docker基础知识请转 docker中文文档:http://docker-doc.readthedocs.io/zh_CN/latest/index.html docker英文文档: https:/ ...

  4. 【docker】 centos7 下 使用docker 安装 LNMP

    一.安装 mysql 1 获取 mysql 镜像 docker pull mysql:5.7 2 创建mysql的镜像,并运行 docker run -d -p : -e MYSQL_ROOT_PAS ...

  5. Centos7搭建Docker部署LNMP

    1.首先呢先更新yum源 yum update 2.1.安装docker存储库 yum install -y yum-utils \ device-mapper-persistent-data \ l ...

  6. 使用docker搭建lnmp环境

    Docker容器LNMP环境搭建 安装 制作镜像 启动并关联实例 安装 系统环境 硬件型号: ThinkPad T520 系统版本: ubuntu 14.04 CPU: i7 RAM: 8G 添加软件 ...

  7. Docker简介以及使用docker搭建lnmp的过程(多PHP版本)

    一.Docker基础 Docker安装 Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker. 通过 uname ...

  8. Mac下docker搭建lnmp环境 + redis + elasticsearch

    之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...

  9. docker搭建lnmp环境(问题,资料,命令)

    入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...

随机推荐

  1. JQuery EasyUI更新说明

    JQuery EasyUI 1.3.6版本更新内容: Bug(修复) treegrid:修复“getChecked”方法不能正确的返回被选择的行的问题: tree:修复在“onlyLeafCheck” ...

  2. node端代理浏览器路由 解决浏览器跨域问题

    var _ = require('lodash'); var request = require("request"); /* @LM 2017-02-16 node端代理浏览器路 ...

  3. Appium元素定位难点:混合式的native+webview

    现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了. 1.认识识webview & ...

  4. time包 — 汇总

    time包学习 package main; import ( "time" "fmt" ) func main() { //time.Time代表一个纳秒精度的 ...

  5. spring boot + vue实现图片上传及展示

    转载:https://blog.csdn.net/weixin_40337982/article/details/84031778 其中一部分对我很有帮助 转载记录下 首先,html页面: <! ...

  6. python3与Excel的完美结合

    https://segmentfault.com/a/1190000016256490 Excel 是 Windows 环境下流行的.强大的电子表格应用.openpyxl 模块让 Python 程序能 ...

  7. 机器学习 降维算法: isomap & MDS

    最近在看论文的时候看到论文中使用isomap算法把3D的人脸project到一个2D的image上.提到降维,我的第一反应就是PCA,然而PCA是典型的线性降维,无法较好的对非线性结构降维.ISOMA ...

  8. 前后端API交互如何保证数据安全性

    前后端分离的开发方式,我们以接口为标准来进行推动,定义好接口,各自开发自己的功能,最后进行联调整合.无论是开发原生的APP还是webapp还是PC端的软件,只要是前后端分离的模式,就避免不了调用后端提 ...

  9. 在 WPF 中获取一个依赖对象的所有依赖项属性

    原文:在 WPF 中获取一个依赖对象的所有依赖项属性 本文介绍如何在 WPF 中获取一个依赖对象的所有依赖项属性. 本文内容 通过 WPF 标记获取 通过设计器专用方法获取 通过 WPF 标记获取 p ...

  10. [unity]GPU Instance学习

    前言我们之前研究过为什么Unity的UI可以合批,是因为使用了相同的材质进行渲染,UI上不同图片渲染是通过把图片打成一张图集后,使用Image组件对顶点填充了不同的UV值实现的.那么有没有什么办法可以 ...