使用 Docker 搭建 Wamp 环境

Docker/容器
709
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