Docker 安装 Nginx 容器部署前端项目

先安装docker

Docker安装详情

安装Nginx镜像

1、拉去取Nginx镜像

Nginx官方镜像

docker pull nginx	下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest )
docker pull nginx:xxx	下载指定版本的Nginx镜像 (xxx指具体版本号)

我们拉去1.24.0的nginx镜像

docker pull nginx:1.24.0

2、查看镜像

docker images

查看镜像
在这里插入图片描述

3、创建Nginx配置文件

  1. 启动前需要先创建Nginx外部挂载的配置文件/home/nginx/conf/nginx.conf
  2. 之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
  3. 当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建

4、创建挂载目录

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

容器中的nginx.conf文件和conf.d文件夹复制到宿主机

5、先生成容器并把nginx对应配置放入本地文件夹一份

# 生成容器
docker run --name nginx -p 80:80 -d nginx:1.24.0
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

到对应目录下查看文件已经存在了(划红线的)
在这里插入图片描述

6、重新创建Nginx容器并运行

# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx# 删除正在运行的nginx容器
docker rm -f nginx# 重新加载配置文件
docker exec 容器id nginx -s reload

在这里插入图片描述
删除成功后,重新生成容器并进行目录挂载映射

docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:1.24.0

在这里插入图片描述

注意
-p 80:80有个坑,部署的时候后面详说

7、测试

内部curl一下
在这里插入图片描述
外部使用外网ip访问
在这里插入图片描述

部署前端项目

1、配置nginx server监听

在对应挂在目录下创建监听文件
在这里插入图片描述
配置:

server
{listen 6087;location / {#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。#例如,您的网站运行目录在/etc/www下,则填写/etc/www。#允许跨域请求的域,* 代表所有add_header 'Access-Control-Allow-Origin' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET/POST/PUT/DELETEadd_header 'Access-Control-Allow-Methods' *;#允许请求的headeradd_header 'Access-Control-Allow-Headers' *;root /data/java/formula-vue/dist;try_files $uri $uri/ /index.html;index index.html index.htm;}location /stage-api/ {proxy_read_timeout 200000s;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For 	  $proxy_add_x_forwarded_for;proxy_pass http://localhost:6088/;}}
/data/java/formula-vue/dist vue项目目录
proxy_read_timeout 200s; 里面有耗时大请求
proxy_pass http://localhost:6088/;代理到后端请求

在这里插入图片描述

第一个坑

docker运行nginx镜像时,设置端口映射,则只有该映射端口起作用,nginx配置的其他端口无效
在这里插入图片描述
所以想要多个端口起效果,启动时要用–net host (先删除容器后重新生成)

docker run --net host  --name nginx --restart always  \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:1.24.0

第二个坑

访问报了rewrite or internal redirection cycle while internally redirecting to “//index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html”

*1 rewrite or internal redirection cycle while internally redirecting to "//index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html/index.html", 

docker下的nginx只能读到挂载路径下面的文件(这和软件安装的Nginx不同,有时候照着copy还是会出现问题),所以将编译好的前端项目文件夹复制到nginx挂载的路径下,并且修改配置文件中的root路径,再次访问成功加载首页

把dist重新上传到挂在路径/usr/share/nginx/html/下
并修改nginx项目config如下

server
{listen 6087;location / {#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。#例如,您的网站运行目录在/etc/www下,则填写/etc/www。#允许跨域请求的域,* 代表所有add_header 'Access-Control-Allow-Origin' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET/POST/PUT/DELETEadd_header 'Access-Control-Allow-Methods' *;#允许请求的headeradd_header 'Access-Control-Allow-Headers' *;root /usr/share/nginx/html/dist;index index.html index.htm;try_files $uri $uri/ /index.html;}location /stage-api/ {proxy_read_timeout 200000s;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://localhost:6088/;}
}

重新加载配置文件

# 重新加载配置文件
docker exec 容器id nginx -s reload

重新访问http://ip:6087/成功跳转到首页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频号视频下载需要小程序提供下载支持!

前言:和大家分享一个视频号视频下载的方法!可以帮助用户使用的工具将视频号视频保存到手机相册的! 有时候在刷视频号的时候碰到自己喜欢的视频就情不自禁的想要把他下载下来, 1:遇到喜欢的视频视频怎么下载 例如&am…

中国传统游戏-幻方-c/c++实现

幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。 幻方也是一种中国传统游戏。旧时在官府、学堂多见。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形,使在同一行、同…

Pytorch框架—文本情感分类问题项目(二)

整体过程就是首先拿到了数据集微博100K,对个这个评论数据集进行处理,分类标签和评论内容。对评论内容进行分词处理,之后进行词频统计对高词频的进行编码,低词频的进用《UNK》表示,并使用《PAD》把他们扩展到等长列表便…

MATLAB编译器配置:MinGW

使用 MATLAB 2022b版本,查询编译器时如上,想安装个MinGW编译器,自带的附加资源管理不好使,只能换个别的法子,经过一些参考,总结如下。 步骤1.在这里下载一个MinGW.最新版本是10.3.0.然后默认安装&#xff…

蓝桥杯刷题|03入门真题

目录 [蓝桥杯 2020 省 B1] 整除序列 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2020 省 AB3] 日期识别 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2019 省 B] 特别数的和 题目描述 输入格式 输出格…

谷歌的后量子密码学威胁模型

1. 引言 若现在不使用量子安全算法来加密数据,能够存储当前通信的攻击者最快十年内就能对其解密。这种先存储后解密的攻击是当前采用后量子密码学 (post-quantum cryptography,PQC) 背后的主要动机,但其他未来的量子计算威胁也需要一个深思熟…

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据 使用环境: ubantu16 QT5.7 开发板GEC6818 实现要求: 利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录,并指定温湿度记录超过指定范围,进行报警(LED&#…

天锐绿盾|公司开发部门源代码泄露防护系统,无感透明加密软件

#代码加密、代码防泄密、开发部门源码防泄漏、源代码透明加密、办公透明加密系统# 天锐绿盾作为一款针对企业数据安全的专业软件,特别是在防止公司开发部门源代码泄露方面,提供了智能无感透明加密保护系统。 德人合科技 | 天锐绿盾 PC地址: …

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体 最近看到有一款Wubuntu的文章,对于习惯使用windows操作系统,又不熟悉ubuntu系统的程序员小白来说,可以说是福音了。目前的Wubuntu兼容性可能还有一点问题,如果再迭代几次的…

Python库Gym:打开机器学习与强化学习的大门

Python库Gym:打开机器学习与强化学习的大门 强化学习作为人工智能领域的重要分支,已经在各种领域展现出了巨大的潜力。为了帮助开发者更好地理解和应用强化学习算法,Python库Gym应运而生。Gym提供了一个开放且易于使用的环境,供开…

win电脑安装绿色版MySQL8

一、下载压缩包 下载mysql server的zip文件,地址:Windows (x86, 64-bit), ZIP Archive 解压后: 二、创建配置文件(可忽略) 配置文件可存放位置及名称: C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini…

招个Java工程师,却发现了一个宝藏平台

一直关注磊哥的朋友都知道,磊哥出来创业(做 Java 就业指导)也快一年了,从最初的纠结彷徨、不知所措,到现在逐渐找到自己的节奏,也算是半个媳妇熬成婆了。 磊哥现在每天做的事儿,就是通过文章和…

使用Navicat远程连接Linux中的MySQL

一、登录MySQL数据库 mysql -uroot -pXjm123456 二、使用mysql数据库 use mysql; 三、查询user表中包含host的字段 select user,host from user;### 该字段中,localhost表示只允许本机访问,可以将‘localhost’改为‘%’,‘%’表…

8.发布页面

发布页面 官网 https://vkuviewdoc.fsq.pub/components/form.html 复制官网中的内容 代码 write.vue <template><view class"u-wrap u-p-l-20 u-p-r-20"><u-form :model"addModel" ref"form1"><u-form-item label&quo…

深度强化学习06Actor-Critic

Critic裁判 裁判打分 提高自己的技术 提高打分水平

编译原理-实现识别标识符的词法分析器——沐雨先生

实验任务&#xff1a; 实现识别标识符的词法分析器 实验要求&#xff1a; 根据编译原理理论课教材中图2.3“标识符的转换图”&#xff0c;用C语言编写识别标识符的词法分析器&#xff0c;以文本文件为输入&#xff0c;控制台&#xff08;或文件&#xff09;输出识别出的每个…

uni app 打肉肉(打飞机)小游戏

都给老婆和孩子写了 合十 钓鱼了&#xff0c;给自己写个打飞机吧。没找飞机怪兽的图片。就用馒头和肉肉代替了。有问题不要私信我。自己改哈 <template><view class"page_main"><view class"contentone"><canvas class"canvas…

C语言每日一题(64)快乐数

题目链接 力扣网202 快乐数 题目描述 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不…

Flink源码解析(1)job启动,从JM到TM过程详解

网络传输模型 首先在看之前,回顾一下akka模型: Flink通讯模型—Akka与Actor模型-CSDN博客 注:ActorRef就是actor的引用,封装好了actor 下面是jm和tm在通讯上的概念图: RpcGateway 不理解网关的作用,可以先移步看这里:网关_百度百科 (baidu.com) 用于定义RPC协议,是…

torchvision pytorch预训练模型目标检测使用

参考&#xff1a; https://pytorch.org/vision/0.13/models.html https://blog.csdn.net/weixin_42357472/article/details/131747022 有分类、检测、分割相关预训练模型 1、目标检测 https://pytorch.org/vision/0.13/models.html#object-detection-instance-segmentation-…