docker搭建LNMP环境

一、docker安装mysql

#远程拉取镜像
docker pull mysql:5.6 

#查看拉下来的mysql的镜像
docker images  

#开始运行并启动一个容器
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.6
  
参数说明 
-d 让容器在后台运行 
-p 添加主机到容器的端口映射 
-e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置 
–name 容器的名字,随便取,但是必须唯一

#查看创建的容器
docker ps -a

#进入容器
docker exec -it mysql /bin/bash
  
参数说明 
-t 在容器里生产一个伪终端 
-i 对容器内的标准输入 (STDIN) 进行交互

#容器中默认是没有vim的,所以我们首先要安装vim,需要注意的是安装前记得先执行apt update命令,不然安装会出现问题。进入到mysql容器后,我们通过创建一个远程可以访问的用户,这样我们就能从别的主机访问到我们的数据库了。

二、docker安装php-fpm

#拉取php-fpm镜像
docker pull php:7.0-fpm
  
#创建phpfpm容器
docker run -d -v /data/nginx/html:/var/www/html -p 9000:9000 --name phpfpm php:7.0-fpm
  
#参数说明 
-d 让容器在后台运行 
-p 添加主机到容器的端口映射 
-v 添加目录映射,即主机上的/data和phpfpm容器中/var/www/html(phpfpm服务访问php文件目录)目录是同步的 
–name 容器的名字 

#进入phpfpm容器安装mysqli扩展(只需要这一步即可)
docker-php-ext-install mysqli
  
#在容器里查看扩展模块
php -m

三、docker安装nginx

#拉取nginx镜像
docker pull nginx

#将nginx.conf、default.conf最好从nginx容器中导出到本机上
docker cp /etc/nginx/nginx.conf:/data/nginx/conf/nginx.conf

docker cp /etc/nginx/conf.d/default.conf:/data/nginx/conf.d/default.conf

#修改配置文件default.conf让它支持php
location ~ \.php$ {
    root           /var/www/html;
    fastcgi_index  index.php;
    fastcgi_pass   phpfpm80:9000;//这里改成--link进来的源容器名称,也可以直接用php容器的ip
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;//如果你的根目录和php容器的根目录不一样,这里的$document_root需要换成你php下的根目录,不然php就找不到文件了
    include        fastcgi_params;                                                                                                                                              
}

 
#运行nginx容器
docker run -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /data/nginx/logs:/var/log/nginx -v /data/nginx/conf.d:/etc/nginx/conf.d --name nginx80 nginx:latest --link phpfpm80:phpfpm

 
参数说明:
-d 让容器在后台运行 
-p 添加主机到容器的端口映射 
-v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一点非要一模一样,如果不一样在配置nginx的时候需要注意 
–name 容器的名字 
–link 与另外一个容器建立起联系

#查看容器IP:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID>

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐