docker配置lnmp环境

2019-12-16  本文已影响0人  月圆星繁

安装docker

按照官网上面安装就可以了

拉取镜像文件

一开始我拉取的都是latest镜像,后面我把docker run 这些镜像写在shell脚本中,去执行,发现有些状态是退出,然后一直没有成功,后面我就单独拿出来docker run又成功了。

我shell脚本执行的时候如果后面没有带 TAG,就会一直起不来是退出状态,我也很诧异,百度也没能拯救我,所以后面我的都是带有版本的。

创建目录

mkdir  -p /myDocker/firstDemo/nginx/html  
mkdir  -p /myDocker/firstDemo/nginx/log
mkdir  -p /myDocker/firstDemo/nginx/conf.d

编写三个shell文件:

如果这几个shell脚本不能跑起来容器,那就直接将文件里面的内容拿出了跑吧。

#!/usr/bin bash
docker run -p 80:80 --name nginx \
-v /myDocker/firstDemo/nginx/html:/usr/share/nginx/html \
-v /myDocker/firstDemo/nginx/log/:/var/log/nginx \
-v /myDocker/firstDemo/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
-idt nginx:1.16
#!/usr/bin bash
docker run -p 9000:9000 --name php \
-v /myDocker/firstDemo/nginx/html:/var/www/html/ \
--privileged=true \
-d php:7.2-fpm
#!/usr/bin bash
docker run -p 3306:3306 --name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-v /usr/lib/mysql:/usr/lib/mysql \
-d mysql:5.7
执行shell脚本
sh docker_nginx.sh
sh docker_php.sh
sh docker_mysql.sh

编写nginx配置文件

创建default.conf文件
vim /myDocker/firstDemo/nginx/conf.d/default.conf
nginx配置如下
server {
    listen       80;   #监听80端口,接收http请求
    server_name  mgk.com;   #就是网站地址
    root /usr/share/nginx/html; # 准备存放代码工程的路径
    #路由到网站根目录www.example.com时候的处理
    location / {
        index index.php index index.html index.htm;   #跳转到mgk.com/index.php
        autoindex on;
    }   

     #当请求网站下php文件的时候,反向代理到php-fpm
     location ~ \.php$ {
        fastcgi_pass   172.16.236.190:9000; #nginx fastcgi进程监听的IP地址和端口,docker中要写内网的ip,127.0.0.1不行
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;#这里要写/var/www/html,不然 php fastcgi解析不了目录
        include        fastcgi_params;
    }
}
重启nginx
docker restart nginx

测试

/myDocker/firstDemo/nginx/html中编写测试代码

echo "<?php echo phpinfo(); ?>" > index.php

然后浏览访问出现php相关信息。

总结

补充说明:

出现了502错误,检查了半天的nginx配置,后来发现反向代理地址配置有问题:
proxy_pass http://127.0.0.1:8888;
因为nginx在docker中,所以不能使用127.0.0.1:8888来访问宿主机里的nodejs应用,docker内部实际上实现了一个虚拟网桥docker0,所以要通过宿主机内网地址(192.168.102.1)来访问.

补充php+mysql测试

创建文件

vim mysql.php

编辑内容
<?php 
    $link=mysqli_connect("172.16.236.190","root","root"); 
    if(!$link) echo "FAILD!连接错误,用户名密码不对"; 
    else echo "OK!可以连接"; 
?> 

解决mysqli扩展:

1、先得进入容器:docker exec -it php_server /bin/bash
2、然后运行 docker-php , 按两下tab键会有提示

root@781322cc6de5:/var/www/html# docker-php-
docker-php-entrypoint     docker-php-ext-configure  docker-php-ext-enable     docker-php-ext-install    docker-php-source 

3、执行docker-php-ext-install mysqli
4、重启php
5、访问成功

上一篇下一篇

猜你喜欢

热点阅读