1、获取最新版的 nginx 镜像
docker pull nginx:latest
2、运行 nginx 容器
docker run --name nginx-test -p 8082:80 -d nginx:latest
--name nginx-test
容器名称。
-p 8082:80
端口映射,将本地 8082 端口映射到容器内部的 80 端口。
-d nginx:latest
设置容器在在后台一直运行。
3、安装情况、查看主机ip并测试
通过 docker ps
命令查看是否安装成功
获取主机ip
hostname -I
测试是否可以正常访问
同样也可以用127.0.0.1
打开
4、获取 php 镜像
docker pull php:8.2-fpm
5、运行 php 容器
docker run --name php-fpm-8.2 -v /mnt/d/docker/www:/www -d php:8.2-fpm
--name php-fpm-8.2
将容器命名为 php-fpm-8.2
-v /mnt/d/docker/www:/www
将主机中项目的目录 www 挂载到容器的 /www
6、nginx + php 部署
1、运行 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
-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
表示读写。
2、创建 nginx 配置文件
在该目录下添加 /mnt/d/docker/nginx/conf.d/test.conf
文件,内容如下:
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、创建 php 文件
在该目录下添加 /mnt/d/docker/www/test/index.php
php文件
然后浏览器打开访问http://127.0.0.1:8083/
7、获取 mysql 镜像
这里我拉取的是官方最新版本的镜像,也可以拉取其他的镜像版本,看https://hub.docker.com/_/mysql?tab=tags
docker pull mysql:latest
8、运行 mysql 容器
docker run -itd --name mysql-test -p 33066:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
-p 33066:3306
映射容器服务的 3306 端口到宿主机的 33066 端口,外部主机可以直接通过宿主机ip:33066 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456
:设置 MySQL 服务 root 用户的密码。
9、测试 mysql
进入到容器
docker exec -it mysql-test bash
然后进入到mysql服务
mysql -h localhost -uroot -p
也可以使用 Navicat Premium 工具连接测试。