下载安装 docker 桌面
略
创建一个网络,让所有的容器之间可以相互通讯
docker network create -d bridge my-net
拉取各镜像
docker pull mysql:8
docker pull redis:7
docker pull nginx
启动各镜像
注意:挂载本地目录的时候,需要看容器内的具体目录是什么,比如redis容器是将数据写入到
/data
目录
# 启动 Redis
docker run --name redis -d -p 6379:6379 --network my-net --mount type=bind,source=D:\shuxiaoyuan\Docker\Redis\7,target=/data --mount type=bind,source=D:\shuxiaoyuan\Docker\Redis\7\redis.conf,target=/etc/redis/redis.conf redis:7 redis-server /etc/redis/redis.conf --appendonly yes
# 启动 MySQL
docker run --name mysql -it -d -p 3306:3306 --network my-net -e MYSQL_ROOT_PASSWORD=123456 --mount type=bind,source=D:\shuxiaoyuan\Docker\MySQL,target=/var/lib/mysql mysql:8
# 启动 PgSQL
docker run --name pgsql --network my-net -e POSTGRES_PASSWORD=123456 -p 5432:5432 --mount type=bind,source=D:\shuxiaoyuan\Docker\Yida\PgData,target=/var/lib/postgresql/data -d postgres:16
# 启动 Nginx
# 注意:nginx 容器和 PHP 容器记得都要挂载代码目录,不然 css、js等静态文件访问会 404
docker run -d -p 80:80 -p 443:443 --name nginx --network my-net --mount type=bind,source=D:\shuxiaoyuan\Docker\MI\Nginx\www,target=/usr/share/nginx/html --mount type=bind,source=D:\shuxiaoyuan\Docker\MI\Nginx\logs,target=/var/log/nginx --mount type=bind,source=D:\MyCode,target=/www --mount type=bind,source=D:\shuxiaoyuan\Docker\MI\Nginx\conf\nginx.conf,target=/etc/nginx/nginx.conf --mount type=bind,source=D:\shuxiaoyuan\Docker\MI\Nginx\conf\conf.d,target=/etc/nginx/conf.d nginx
# 启动 PHP 镜像
docker run --name php80 -d --network my-net --mount type=bind,source=D:\MyCode,target=/www shuxiaoyuan/php:8.0.28.v3
测试
本机用客户端连接 Redis、MySQL
查看网络
docker network inspect my-net
# 如下所示
[
{
"Name": "my-net",
"Id": "294d948a918c81241e0c7e14bcbee7cd24f50a30fa6931914045cadd8f06d749",
"Created": "2023-03-15T03:06:43.7510048Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"2b2b018062aa22c4653c341d2a58ffb20cbd145e9575a2149c70e9c2defc4d18": {
"Name": "mysql",
"EndpointID": "7de0ad75f085532460d413fc18b66219765bfc6b8638a577807990329f487fd8",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"3408aeef4eec4fb61d64db292c59e2758141214fe5e69b21e17b8319ab06622f": {
"Name": "ecshop",
"EndpointID": "4c6414ca0fc2c48e3a388b9d4cf566eab39a170a9983549fbee3dfeff0d75a0a",
"MacAddress": "02:42:ac:12:00:04",
"IPv4Address": "172.18.0.4/16",
"IPv6Address": ""
},
"a590f2231f13116322cc1edc79aff07aa70a8d364d17dbb45d4c6b0fd98a3ade": {
"Name": "redis",
"EndpointID": "6de904bffdb25b6543b423c816d811f554643d509fe5abb24842c01635508c02",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
容器内互 ping
docker exec -it redis /bin/bash
ping 172.18.0.3
# 若提示么有找到 ping 命令,请自行安装
apt-get update && apt install iputils-ping
代码连接 Redis、MySQL
修改项目的 env 配置即可,看是否能链接成功