windows11在docker上部署LNMP环境

1.我已经在windows11安装好docker desktop了,还没的要先安装。
根据官方教程下载安装docker desktop执行文件.exe,可以参考文章

2.终端直接运行以下命令:

2.1创建mysql
docker run -d -p 3307:3306 –name mysql5.7.23 –privileged=true -v D:\docker\mysql-5.7.23\conf.d:/etc/mysql/conf.d -v D:\docker\mysql-5.7.23\logs:/var/log/mysql -v D:\docker\mysql-5.7.23\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.23

2.2创建php
docker run -p 9003:9000 –name php7.4 -v D:\docker\nginx-1.21.5\html:/usr/share/nginx/html –link mysql5.7.23:docker-mysql -d php:7.4-fpm

2.3创建nginx
docker run –name nginx1.21.5new -p 8080:80 -p 8081-8089:8081-8089-v D:\docker\nginx-1.21.5\html:/usr/share/nginx/html:ro -v D:\docker\nginx-1.21.5\conf:/etc/nginx:ro –link php7.4:localhost -d nginx

说明:

  • -p 8080:80: 端口映射,把 nginx 中的 80 映射到本地的 8080端口。
  • D:\docker\nginx-1.21.5\html: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
  • D:\docker\nginx-1.21.5\conf: 是本地 nginx 配置文件的存储目录,/etc/nginx是容器内 nginx 配置文件的存储目录,这里我把整个nginx目录都映射下来,方便修改。
  • –link php7.4:localhost: 把 php7.4 的网络并入 nginx容器,nginx 可以直接通过localhost:9000 访问 php-fpm。
  • –link mysql5.7.23:docker-mysql 把mysql容器的荒落并入php容器,可以直接通过docker-mysql别名调用3306 端口访问mysql

3.nginx配置文件D:\docker\nginx-1.21.5\conf\conf.d\default.conf

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

	root   /usr/share/nginx/html;
	index  index.html index.htm index.php;

	location / {
        try_files $uri $uri/ /index.php$is_args$args;
		autoindex on;
    }
	
    location ~ \.php$ {
        add_header X-debug-message "A php file was used $document_root" always;
	fastcgi_index  index.php;
	fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
	fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	fastcgi_param  PATH_INFO  $fastcgi_path_info;
	fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
	include        fastcgi_params;
	fastcgi_pass   localhost:9000;
    }
}

说明:

3.1localhost:9000 表示 php-fpm 服务的访问路径, 已经通过link参数绑定了容器网络互通。

3.2/usr/share/nginx/html是nginx和php经docker映射变成本地路径D:\docker\nginx-1.21.5\html,都放一起就可以直接通过设置root参数,使用$document_root来指定SCRIPT_FILENAME的php文件路径,不然一不小心就找不到php文件出现404

4.最后都跑起来,放个phpmyadmin记得修改config.inc.php参数为上面起的别名,在容器内直接能访问到。

$cfg[‘Servers’][$i][‘host’] = ‘docker-mysql’;
docker里应该不能用locaohost,不然提示会mysqli_real_connect(): (HY000/2002): No such file or directory,用本地系统会去找mysql.stock,php容器里又不和MySQL一起,所以。。。

5.调试容器内通讯缺少工具的时候就执行下面几个常用命令安装下

apt update
apt install net-tools // 查看ip
apt install telnet //验证端口
apt install iputils-ping //ping

此条目发表在服务器分类目录,贴了标签。将固定链接加入收藏夹。

发表回复