《尚庭公寓》项目部署之Docker + Nginx

powershell 复制代码
docker rmi nginx 
docker pull nginx 

docker rm -f nginx 

#先创建一个简易的nginx容器(后面会删),然后通过 docker cp命令把容器里面的nginx配置反向拷贝到宿主主机上。
docker run --name nginx -p 80:80 -d nginx

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /mountdata/nginx/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /mountdata/nginx 
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /mountdata/nginx
# 将容器中log文件夹复制到宿主机
docker cp nginx:/var/log/nginx /mountdata/nginx/log 

#自定义测试项目的conf文件
#"/mountdata/nginx/conf.d/hello-nginx.conf"
server {
listen       8080;
server_name  192.168.200.131;

location /hello-nginx {
    root   /usr/share/nginx/html;
    index  index.html;
}
}

#"/mountdata/nginx/conf.d/hello-proxy.conf"
server {
    listen       9944;
    server_name  192.168.200.131;

    location / {
        proxy_pass http://www.atguigu.com;
    }
}

#【问题】root为什么是/usr/share/nginx/html,而不是/mountdata/nginx/html?
#【原因】/usr/share/nginx/html指向了Nginx容器内部的路径,而这个路径已经通过Docker的卷挂载映射到了宿主机的/mountdata/nginx/html目录

# 删除正在运行的nginx容器
docker rm -f nginx

# 80是默认端口(即"Welcome to nginx!"那个页面),8080是测试项目端口,部署几个项目就要写几个-p端口
docker run -d \
--name=nginx \
-v /mountdata/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mountdata/nginx/html:/usr/share/nginx/html \
-v /mountdata/nginx/conf.d/:/etc/nginx/conf.d \
-v /mountdata/nginx/log:/var/log/nginx \
--restart=always \
--network=hmall \
-p 80:80  \
-p 8080:8080 \
-p 9944:9944 \
nginx:latest
# 【注释】
# -d 表示以后台守护进程形式运行容器。
# --name=nginx 为容器指定了一个名称
# -v 选项用于挂载宿主机目录到容器内的对应目录,分别挂载了Nginx的配置文件、HTML文件、conf.d目录以及日志目录,这有助于容器内外数据的共享和持久化。
# --restart=always 确保容器随Docker服务启动而自动启动。
# --network=hmall 将容器连接到名为hmall的网络。
# -p 80:80 映射容器的80端口到宿主机的80端口,用于默认的Nginx欢迎页面。
# -p 8080:8080 映射容器的8080端口到宿主机的8080端口,用于自定义的测试项目。
# -p 9944:9944 同上

# 重启容器
docker restart nginx

访问http://192.168.200.131:80,成功!

访问http://192.168.200.131:8080/hello-nginx,成功!

访问http://192.168.200.131:9944,成功!

相关推荐
寻星探路7 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧9 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法10 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty72510 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎10 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄10 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
金刚猿10 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
忆~遂愿11 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds11 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹11 小时前
【Java基础】多态 | 打卡day2
java·开发语言