WSL下使用Docker搭建lnmp环境

312 阅读2分钟

Nginx版本:1.27.3

Mysql版本: 8.0.40

PHP版本:8.1.31

前提要打开windows下Linux子系统

一、搭建nginx

拉取nginx镜像,可以在Docker桌面版上查询镜像,也可以使用命令拉取,命令具体网上都有(这里要科学上网才可以) image.png 使用docker run --name nginx-test -p 8080:80 -d nginx 运行容器,最后通过浏览器访问127.0.0.1:8080 验证服务是否正常,出现以下画面就是正常的

image.png 然后使用docker stopdocker rm 命令将nginx容器停止并删掉

二、搭建php

拉取php-fpm镜像,步骤和nginx镜像拉取是一样的,也可以用命令 docker pull php:8.1.31-fpm

然后执行命令 docker run --name php8.1.31 -v ~/nginx/www:/www -d php:8.1.31-fpm 将主机中的目录挂载到容器里,mkdir ~/nginx/conf/conf.d 创建nginx配置文件目录

image.png 在该目录下添加  ~/nginx/conf/conf.d/default.conf 文件,内容如下:

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
     }
      error_page   500 502 503 504  /50x.html;
    location = /50x.html {
           root   /usr/share/nginx/html;
       }
    location ~\.php$ {
       fastcgi_pass   php:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
       include        fastcgi_params;
     }
}                                                                                                  

重新运行nginx容器并将目录挂载和把php-fpm的网络并入 docker run --name nginx -p 8083:80 -d ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro --link php8.1.31:php

  • -p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
  • ~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
  • ~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
  • --link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

~/nginx/www 目录下创建 info.php 文件 输入如下代码

<?php
echo phpinfo();
?>

最后访问**http://127.0.0.1:8083/info.php**

image.png

如果要部署虚拟域名直接在 ~/nginx/conf/conf.d 里复制默认的conf后缀的文件,例如elong.test.vip

image.png

elong.test.vip.conf文件里的代码:

server {
    listen       80;
    server_name  elong.test.vip;
    location / {
        root   /usr/share/nginx/html/elong.test.vip/public;
        index  index.html index.htm index.php;
     }
      error_page   500 502 503 504  /50x.html;
    location = /50x.html {
           root   /usr/share/nginx/html/elong.test.vip/public;
       }
    location ~\.php$ {
       fastcgi_pass   php:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  /www/elong.test.vip/public/$fastcgi_script_name;
       include        fastcgi_params;
     }
}   

还要修改host文件

image.png

域名 + 端口号访问 elong.test.vip:8083/info.php

image.png

三、mysql

拉取镜像 docker pull mysql:8.0.40

运行 docker run -itd --name mysql8.0.40 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql 123456是mysql密码 3306是端口映射

image.png