使用 Docker 搭建 Wamp 环境

Docker/容器
653
0
0
2022-11-14
标签   Docker

一、mysql

1、启动容器

docker run --name mysql5.6  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6

2、创建目录

mkdir D:\wnmp\mysql\mysql5.6\conf
mkdir D:\wnmp\mysql\mysql5.6\data
mkdir D:\wnmp\mysql\mysql5.6\log

3、拷贝容器中的配置

docker cp mysql5.6:/etc/mysql D:\wnmp\mysql\mysql5.6\conf
docker cp mysql5.6:/var/lib/mysql D:\wnmp\mysql\mysql5.6\data
docker cp mysql5.6:/var/log/mysql D:\wnmp\mysql\mysql5.6\log

4、删除当前容器

docker stop mysql5.6
docker rm mysql5.6

5、重新启动容器

docker run --name mysql5.6 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v D:\wnmp\mysql\mysql5.6\conf:/etc/mysql/ -v D:\wnmp\mysql\mysql5.6\data:/var/lib/mysql -v D:\wnmp\mysql\mysql5.6\log:/var/log/mysql/ -d mysql:5.6

二、php

1、启动容器

docker run --name php8.1 -p 9000:9000 -d php:8.1-fpm

2、创建目录

mkdir D:\wnmp\php\php8.1\conf
mkdir D:\wnmp\php\php8.1\log
mkdir D:\wnmp\www

3、拷贝容器中的配置

docker cp php8.1:/usr/local/etc D:\wnmp\php\php8.1\conf
docker cp php8.1:/usr/local/var/log D:\wnmp\php\php8.1\log
docker cp php8.1:/var/www/html D:\wnmp\www

4、删除当前容器

docker stop php8.1
docker rm php8.1

5、重新启动容器

docker run --name php8.1 -p 9000:9000 -v D:\wnmp\php\php8.1\conf\etc:/usr/local/etc -v D:\wnmp\php\php8.1\log:/usr/local/var/log -v D:\wnmp\www:/var/www/html -d php:8.1-fpm

6、进入容器,开启pdo_mysql扩展

docker-php-ext-install pdo_mysql

三、nginx

1、启动容器

docker run --name nginx1.22 -p 80:80 -d nginx:1.22

2、创建目录

mkdir D:\wnmp\nginx\nginx1.22\conf
mkdir D:\wnmp\nginx\nginx1.22\log

3、拷贝容器中的配置

docker cp nginx1.22:/etc/nginx/ D:\wnmp\nginx\nginx1.22\conf
docker cp nginx1.22:/var/log/nginx/ D:\wnmp\nginx\nginx1.22\log

4、删除容器

docker stop nginx1.22
docker rm nginx1.22

5、重新启动容器

docker run --name nginx1.22  -p 80:80 -v D:\wnmp\www:/var/www/html -v D:\wnmp\nginx\nginx1.22\conf\nginx:/etc/nginx/ -v D:\wnmp\nginx\nginx1.22\log:/var/log/nginx/ -d nginx:1.22

6、本地访问

(1)、修改 D:\wnmp\nginx\nginx1.22\conf\nginx\conf.d\ 目录下的 default.conf 文件

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/html;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html  
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
    #  
    #location ~ \.php$ {  
    #    proxy_pass   http://127.0.0.1; 
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
    #
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   192.168.0.66:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root  
    # concurs with nginx's one  
    #
    location ~ /\.ht {
        deny  all;
    }
}

(2)、在 D:\wnmp\www 目录下创建 index.php 文件,并且写入以下内容

<?php
echo 'test.com';

(3)、重启 nginx

docker restart nginx1.22

(4)、打开浏览器,输入 127.0.0.1 即可访问

7、域名访问

(1)、在 D:\wnmp\nginx\nginx1.22\conf\nginx\conf.d\ 目录下新建 test.conf 文件,内容如下

server {
    listen       80;
    listen  [::]:80;
    server_name  test.com;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/html/test;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html  
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
    #  
    #location ~ \.php$ {  
    #    proxy_pass   http://127.0.0.1; 
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
    #
    location ~ \.php$ {
        root           /var/www/html/test;
        fastcgi_pass   192.168.0.66:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root  
    # concurs with nginx's one  
    #
    location ~ /\.ht {
        deny  all;
    }
}

(2)、修改 C:\Windows\System32\drivers\etc 目录下的 hosts 文件

127.0.0.1 test.com
127.0.0.1 www.test.com

(3)、在 D:\wnmp\www 目录下创建 test 目录,并在目录下创建 index.php 文件,并且写入以下内容

<?php
echo 'test.com';

(3)、重启 nginx

docker restart nginx1.22

(4)、打开浏览器,输入 test.com 即可访问

四、composer

1、安装composer

docker pull composer

2、使用composer

docker run --rm -it -v D:\wnmp\www\phpart:/app  composer update

3、使用composer,并将缓存映射到主机(可选)

(1)、在 D:\wnmp\目录下创建 composer 文件夹

(2)、执行以下命令

docker run --rm -it -v D:\wnmp\www\phpart:/app -v D:\wnmp\composer\:/tmp composer install

4、在phpstorm中使用composer镜像

(1)、打开 phpstorm 设置,搜索 composer

(2)、选择 远程解释器,点击 CLI解释器 最右侧的 ... ,配置CLI解释器

(3)、点击 + 号,选择 From Docker, Vagrant, VM, WSL, Remote...

(4)、选择 docker,新建服务器 ,直接确定即可

(5)、选择 composer 镜像,然后一直确定即可

(6)、最后,直接打开composer.json文件,点击phpstorm工具右上角的更新即可

五、xdebug

1、进入容器,并下载xdebug

pecl install xdebug

2、打开php.ini文件

D:\wnmp\php\php8.1\conf\etc\php\php.ini

3、修改php.ini

[xdebug]                                                                        
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20200930/xdebug.so
xdebug.show_exception_trace=On                   
xdebug.remote_handler=dbgp              
xdebug.remote_autostart=Off                           
xdebug.remote_enable=On                                               
xdebug.mode=debug                          
xdebug.remote_port=9003                                             
xdebug.idekey=PHPSTORM                  
xdebug.remote_log=/tmp/xdebug_remote.log                                       
xdebug.remote_connect_back=On           
xdebug.remote_host= 192.168.0.66                  
xdebug.client_host = 192.168.0.66

把remote_host(远程主机)和client_host(客户端主机)修改为局域网IP

然后重启PHP容器

注意:有个大坑,就是no-debug-non-zts-20200930 后面的日期不一定是这个,一定要看清刚才安装的

如果忘了,可以进入容器中输入以下命令查看后面的日期

cd /usr/local/lib/php/extensions/

然后再修改成正确的日期就可以了

4、配置 phpStorm(2022版本)

(1)、打开(设置—PHP—调试)

在xdebug选项中配置调试端口为:9000,9003(如果默认就是这样,那就不用配置了)

(2)、打开(DBGp代理),配置以下内容

IDE键:PHPSTORM 
主机:192.168.0.66
端口:9003