Docker搭建LNMP环境
sunshj Lv4

使用docker手动安装mysql,php,nginx搭建web环境

一、Centos7安装Docker

卸载旧版本

1
yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包

1
yum install -y yum-utils device-mapper-persistent-data lvm2

更新

1
yum -y update

安装依赖

1
2
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install git-core

安装docker

1
2
3
4
5
6
7
sudo yum check-update
curl -fsSL https://get.docker.com/ | sh
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker
#查看版本号
docker -v

docker加速

1
cd /etc/docker
1
2
3
4
5
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://awdww488.mirror.aliyuncs.com"]
}
EOF
1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

二、docker安装NMP

拉取镜像 (nginx1.12.2,mysql5.7,php7.2)

1、获取 mysql 镜像

1
docker pull mysql:5.7
启动容器 d_mysql

-p:端口映射,映射容器的3306 , 后面就是密码和名称

1
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name d_mysql mysql:5.7

2、获取 php7.2 镜像

1
docker pull php:7.2-fpm
创建 PHPfpm 容器

-v 前面是主机的目录映射容器的目录

link:挂上msyql

1
docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link d_mysql:mysql --name d_phpfpm php:7.2-fpm
测试目录映射

使用以下命令进入到PHP容器,就会到var/www/html 目录

1
docker exec -it d_phpfpm bash

新建一个PHP文件

1
touch test.php

然后退出容器

1
exit

到主机的 var/nginx/www/html 目录下也出现了个test.php

php 的扩展安装
1
docker-php-ext-install pdo_mysql(curl ...)

要安装php-redis的话,需要另外下载,执行下面这个命令就可以了,有问就no或者空格就好

1
pecl install redis && docker-php-ext-enable redis

安装后 php-m

3、获取 Nginx1.12.2 镜像

1
docker pull nginx:1.12.2
运行 Nginx 容器

-p:映射80端口

-v:映射目录,最好和PHP的一样

-name:容器名

-link:跟PHP关联

1
docker run -d -p 80:80 --name d_nginx -v /var/nginx/www/html:/var/www/html --link d_phpfpm:phpfpm --name d_nginx nginx:1.12.2
修改 Nginx 容器配置使其支持 PHP

进入 Nginx 容器

1
docker exec -it d_nginx bash

到 conf 目录修改配置文件 default.conf

1
vi etc/nginx/conf.d/default.conf

如果提示 vi 命令不存在,那就下一个 vim

1
2
apt-get update
apt-get install vim

把对 php 支持的注释去掉并修改路径

1
2
3
4
5
6
7
8
9
10
11
12
13
# 修改
location / {
root /var/www/html;
index index.php index.htm index.html;
}
#取消注释并修改
location ~ \.php$ {
root /var/www/html;
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

重新加载 Nginx

1
nginx -s reload

退出容器

1
exit
 评论