使用docker 安装 LNMP
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 , 到正确的输出,就证明我们的配置成功了。
使用docker 安装 LNMP的更多相关文章
- centos 7使用docker安装lnmp和redis环境
#================Docker基础操作========================== #启动docker服务service docker start#搜索可用docker镜像#h ...
- docker 安装 lnmp
docker 安装 lnmp 标签(空格分隔): php,docker 安装MySql 1 搜索镜像 docker search mysql 2 安装镜像 docker pull mysql:5.7 ...
- docker安装lnmp 环境
docker基础知识请转 docker中文文档:http://docker-doc.readthedocs.io/zh_CN/latest/index.html docker英文文档: https:/ ...
- 【docker】 centos7 下 使用docker 安装 LNMP
一.安装 mysql 1 获取 mysql 镜像 docker pull mysql:5.7 2 创建mysql的镜像,并运行 docker run -d -p : -e MYSQL_ROOT_PAS ...
- Centos7搭建Docker部署LNMP
1.首先呢先更新yum源 yum update 2.1.安装docker存储库 yum install -y yum-utils \ device-mapper-persistent-data \ l ...
- 使用docker搭建lnmp环境
Docker容器LNMP环境搭建 安装 制作镜像 启动并关联实例 安装 系统环境 硬件型号: ThinkPad T520 系统版本: ubuntu 14.04 CPU: i7 RAM: 8G 添加软件 ...
- Docker简介以及使用docker搭建lnmp的过程(多PHP版本)
一.Docker基础 Docker安装 Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker. 通过 uname ...
- Mac下docker搭建lnmp环境 + redis + elasticsearch
之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...
- docker搭建lnmp环境(问题,资料,命令)
入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...
随机推荐
- [LeetCode] 141. Linked List Cycle 链表中的环
Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...
- LeetCode:四数之和【18】
LeetCode:四数之和[18] 题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c ...
- MySQL之表关系
MySQL表关系 一对多关系 一对多与多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系. 举例,学校中一个学.院可以有很多的学生,而一个学生只属于某一个学院(通常情况下), ...
- Appium UiWatchers 监听解决各种非期待弹窗,弹层,弹弹弹等问题
app自动化时,各种不期待的弹层弹窗,升级广告等时有飞出,由于弹窗具有不定时,不定页面等很多不确定性.有的弹窗很不友好,不×掉,很难进行下一步操作,造成 测试用例失败.而判断是否有弹窗,弹层很麻烦.研 ...
- linux中的文件权限chmod
linux中的文件权限chmod 还是GPU集群那点事儿,集群之间磁盘互相挂载,普通用户也可以操作/cu02_nfs./cu04_nfs文件夹,这就牵扯到权限的问题,去google发现所谓的777 ...
- 【LeetCode】盛最多水的容器【双指针+贪心 寻找最大面积】
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...
- kubernetes1.16 配置 metrics-server
kubernetes1.16 版本对应最新的metrics-server为v0.3.5. 下载metrics-server配置文件 git clone https://github.com/kuber ...
- 计数器的Verilog写法
计数器是非常基本的使用,没有计数器就无法处理时序.我在学习时发现市面上有几种不同的计数器写法,非常有趣,在此记录下来: 一.时序逻辑和组合逻辑彻底分开(by锆石科技FPGA教程) 1.代码 //=== ...
- Different Subsets For All Tuples CodeForces - 660E (组合计数)
大意: 定义$f(a)$表示序列$a$本质不同子序列个数. 给定$n,m$, 求所有长$n$元素范围$[1,m]$的序列的$f$值之和. 显然长度相同的子序列贡献是相同的. 不考虑空串, 假设长$x$ ...
- VS2019删除大量空白行或者缩进大量空白行
原文:VS2019删除大量空白行或者缩进大量空白行 问题描述: 在vs编辑器的代码中有时含有大量无用的空白行,我们想删除这些大量空白行或者缩进空白行. 注: 不需要将代码复制在类似word的文本编辑器 ...