由于开发环境的变化,一直是使用的虚拟机作为测试环境。正好有子系统软件安装的需求,正好把对应的docker也安装一下,结果使用完以后。很丝滑。因为是 ubuntu系统。兼容性 很完美!
之前是一直使用 vagragt和虚拟机配合使用。现在直接 wsl命令 随意切换!widnows 也感觉自己不足!
目录
1、安装windowsDokcer软件
下载链接
Docker官方下载-Docker最新版-Docker官方最新版 10-PC下载网
配置连接-wsl连接外部deamon
右键小鲸鱼 > settings > General ,开启expose daemon
ubuntu ,将WSL配置为连接到Docker for Windows执行命令:export DOCKER_HOST=tcp://127.0.0.1:2375
service docker start 开启docker (可能报错 /usr/bin/dockerd not present or not executable 但是好像也不影响)
echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
source ~/.bashrc
docker version
Client:
Version: 24.0.7
API version: 1.41 (downgraded from 1.43)
Go version: go1.21.1
Git commit: 24.0.7-0ubuntu2~22.04.1
Built: Wed Mar 13 20:23:54 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Desktop 4.10.1 (82475)
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:23 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
2、dokcer 镜像拉取 和 端口映射
拉取 nginx mysql php8.2 最新包
docker pull nginx:latest
docker pull php:8.2-fpm
docker pull mysql:latest
配置各自运行环境
nginx
docker run --name php-nginx-test -p 8083:80 -d -v /mnt/d/docker/nginx/conf.d:/etc/nginx/conf.d:rw -v /mnt/d/docker/nginx/log:/var/log/nginx:rw -v /mnt/d/docker/www:/www:rw --link php-fpm-8.2:php nginx:latest
mysql
docker run -itd --name mysql-test -p 33066:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
php
docker run --name php-fpm-8.2 -v /mnt/d/docker/www:/www -d php:8.2-fpm
基础命令行
进入当前环境
docker exec -it mysql-test bash
复制
docker cp 39a1f739d83d:/etc/nginx/nginx.conf /home/docker/nginx/conf/
docker cp /mnt/d/docker/nginx/conf.d/ 55bdde5f7a1b:/etc/nginx/conf.d
docker cp /mnt/d/docker/www/ 55bdde5f7a1b:/www
docker rm 55bdde5f7a1b:/www
子系统位置
C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\rootfs
-p 8083:80 端口映射,将本地 8083 端口映射到容器内部的 80 端口。
-v /mnt/d/docker/nginx/conf.d 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的挂载目录。
-v /mnt/d/docker/www:/www 将主机中项目的目录 www 挂载到容器的 /www目录。
--link php-fpm-8.2:php:php 把 php-fpm-8.2 的网络并入 nginx,并通过修改 nginx 的 hosts 配置,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
ro 表示只读,rw 表示读写
sudo apt-get install php-fpm
sudo service php8.1-fpm start
sudo apt-get install php-cli
sudo apt-get install nginx
sudo service nginx restart
nginx -t
server {
listen 80;
server_name localhost;
location / {
root /www/test;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /www/test;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/test/$fastcgi_script_name;
include fastcgi_params;
}
}
3、最终测试结果
参考文章
使用Windows子系统Ubuntu通过Docker部署nginx+php+mysql环境_docker nginx php-CSDN博客
window下使用linux子系统及基于wsl2安装docker_wsl 安装docker-CSDN博客