【docker】 centos7 下 使用docker 安装 LNMP
一、安装 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的更多相关文章
- Centos7下使用yum安装lnmp zabbix3.2
1:配置epel-release mysql zabbix 源 配置epel源 wget http://mirrors.aliyun.com/epel/epel-release-latest-7.no ...
- Docker Centos7 下建立 Docker 桥接网络
为什么要让docker桥接物理网络? docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是连接到docker0网卡上的.而docker0的ip段为172.1 ...
- [Docker]CentOS7下Docker安装教程
想要倒腾Kubernetes的话,第一步就是要会安装Docker,这篇文章讲一讲过程 安装步骤 检查内核版本,必须是3.10以上 uname -r 安装Docker yum -y install do ...
- [Docker]CentOS7通过rpm包安装Docker
前几天写过一篇文章:[Docker]CentOS7下Docker安装教程,直接使用yum命令下载Docker即可.但是前提是你需要***,所以这篇文章来讲讲,如果不会***,该如何安装Docker. ...
- Centos7下卸载docker
最近发现某台机器上的Docker服务无法开启,报如下错误: [root@localhost ~]# docker ps -a Cannot connect to the Docker daemon. ...
- centos7下使用yum安装mysql
CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 wget http://repo.mysql.com/m ...
- [转]Centos7下caffe的安装
Centos7下caffe的安装 原文地址:http://blog.csdn.net/s2392735818/article/details/49796017 版权声明:本文为博主原创文章,未经博 ...
- centos7下搜狗输入法的安装教程
相信用过centos自带的输入法的朋友都会感叹这也实在是太难用了吧,使用拼音打出来的词总是不能在前几个匹配到,即使是一些常用词也是如此,简直无法忍受跟个zz似的.吐槽完了,这里给出centos7下搜狗 ...
- centos7下使用yum安装pip
centos7下使用yum安装pip 首先安装epel扩展源: yum -y install epel-release 更新完成之后,就可安装pip: yum -y install python-pi ...
- Centos7 下的SVN安装与配置
Centos7 下的SVN安装与配置 1.关闭防火墙 临时关闭防火墙 systemctl stop firewalld 永久防火墙开机自关闭 systemctl disable firewalld 临 ...
随机推荐
- 「下载神器」aria2 懒人安装教程 [Windows]
是一款开源.轻量级的多协议命令行下载工具,支持 HTTP/HTTPS.FTP.SFTP.BitTorrent 和 Metalink 协议,拥有众多第三方支持插件,被誉为「下一代下载工具」和「下载神器」 ...
- Java并发笔记-未完待续待详解
为什么需要并行? – 业务要求 – 性能 并行计算还出于业务模型的需要 – 并不是为了提高系统性能,而是确实在业务上需要多个执行单元. – 比如HTTP服务器,为每一个Socket连接新建一个处理线程 ...
- zabbix 服务器设置邮件报警
实验条件: Zabbix监控服务器.客户端都已经部署完成,被监控主机已添加完成,Zabbix监控运行正常. 实现目的: Zabbix监控服务器设置邮件报警,当被监控主机宕机或达到触发器预设值进,会自动 ...
- Android 混淆代码有关问题总结
Android 混淆代码问题总结 Android 混淆代码: 最快的方式: 1. 首先更新Android的SDK至最新版本,重新建立1个工程,把源码和资源及其他文件拷到新的工程里面. 2. 工程目录底 ...
- z-index 层级关系
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 【scala】scala 数组 (三)
基础内容 1. 数组定义 定长.可变数组的定义;元素添加,删除,排序,求和等常用运算 import scala.collection.mutable.ArrayBuffer import scala. ...
- Linux Eclipse 运行Protobuf
安装环境Ubuntu 14.04 64 bit 安装过程分为三步 1. Linux下安装Protobuf 2. Eclipse下安装protobuf.dt插件 3. Eclipse下配置动态链接库并运 ...
- [转]Tomcat的部署
1.1 Context descriptors Tomcat4中的Manager和Admin管理工具其实就是利用它来部署的.在Tomcat5中提出了Context descriptor这个概念,且为其 ...
- Python中的and/or
在Python中,可以通过and,or和not进行逻辑运算,下面就来看看and和or的简单介绍. 逻辑与-and 对于包含and运算的表达式,Python解释器将从左到右扫描,返回第一个为假的表达式值 ...
- Git Step by Step – (6) Git远程仓库
前面文章中出现的所有Git操作都是基于本地仓库的,但是日常工作中需要多人合作,不可能一直都在自己的代码仓库工作.所以,这里我们就开始介绍Git远程仓库. 在Git系统中,用户可以通过push/pull ...