Ubuntu系统下使用docker容器配置nginx并部署前端项目

news2024/11/17 3:49:32

1.下载 Nginx 镜像

命令 描述

docker pull nginx	下载最新版 Nginx 镜像`  :

2. 创建要挂载的宿主机目录

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

> mkdir -p /home/nginx/conf
> 
> mkdir -p /home/nginx/log
> 
> mkdir -p /home/nginx/html

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

# 生成容器
docker run --name nginx -p 80:80 -d nginx
# 将容器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/


此时会发现宿主机(也就是本机电脑)上的/home/nginx/conf,/home/nginx/log,/home/nginx/html这三个文件夹下已经有容器内的配置文件了

4、创建 Nginx 容器并运行

#停止容器
docker stop nginx
# 删除该容器
docker rm nginx
 

5.启动容器,并正式挂载对应文件

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

然后基础配置已经完成,在地址栏输入localhost:80端口测试一下,表示已经成功安

在这里插入图片描述

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

现在开始配置静态资源路径,保证能够代理到我们想要的静态页面

1.先把我们打包好的前端项目文件(sky)放到指定的文件夹目录下,这里我放到了 本机的/home/nginx/html文件下,对应容器里的/usr/share/nginx/html/sky路径

本机:

  • home
    –nginx
    – html
    —sky

容器内:

  • usr
  • –share
    –nginx
    – html
    —sky

2.然后在/home/nginx/conf/conf.d的

defalult.conf

这个默认配置文件中配置自定义静态资源路径,一定要在默认里配置,我试了一下只在nginx.conf文件里配置是不行的

server {
        listen       80;
        server_name  localhost;
        location / {
        	#这里指的是自己前端项目存放路径(容器里的路径,不是本机)
            root   /usr/share/nginx/html/sky;
            index  index.html index.htm;
        }

每次更改配置文件一定要重启docker里的nginx服务
配置完成之后在地址栏输入localhost:80端口可访问到我们自己项目登录页面

在这里插入图片描述

3.配置反向代理来跟后端tomcat服务器相连接,来保证登录进入系统,同样在default.conf文件里配置,注意下面的地址不能写localhost,如果写localhost指的是容器里的本机地址,下面地址要换成宿主机,也就是现在本机的IP地址(默认后端服务器运行在8080端口下)

# 反向代理,处理管理端发送的请求
        location /api/ {
            proxy_pass   http://192.168.1.102:8080/admin/;
            #proxy_pass   http://webservers/admin/;
        }

每次更改配置文件一定要重启docker里的nginx服务

5.启动后端服务器

在这里插入图片描述

6.点击前台页面登录按钮

在这里插入图片描述
在这里插入图片描述

成功登录进入系统,表示前后端联调成功,项目部署完毕。

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

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

相关文章

京东数据平台:2023年9月京东净水器行业品牌销售排行榜!

鲸参谋监测的京东平台9月份净水器市场销售数据已出炉! 根据鲸参谋平台的数据显示,今年9月份,京东平台净水器的销量为64万,环比下滑约9%,同比下滑约16%;销售额为5.2亿,环比下滑约12%,…

GO学习之 goroutine的调度原理

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…

springboot缓存篇之mybatis一级缓存和二级缓存

前言 相信很多人都用过mybatis,这篇文章主要是介绍mybatis的缓存,了解一下mybatis缓存是如何实现,以及它在实际中的应用 一级缓存 什么是mybatis一级缓存?我们先看一个例子: GetMapping("/list") public…

折半搜索-oier复健练习题目

算法介绍: 折半搜索常用于复杂度O(n!)级的搜索问题,当我们发现很显然可以将问题划分为两部分分别搜索枚举,再合二为一求出最终答案时,我们可以选择使用折半搜索。 常见数据规模: 对于答案的值域往往没有要求&#x…

Jenkins自动化部署SpringBoot项目的实现

本文主要介绍了Jenkins自动化部署SpringBoot项目的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1、Jenkins介绍 1.1、概念 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成…

shell算术运算符学习笔记

文章目录 算术运算符:算术运算扩展算术运算指令expr算术运算指令let自增自减运算符 算术运算符: 加法 - 减法 * 乘法 / 除法 % 取余 ** 幂运算算术运算扩展 算术运算扩展的运算数只能是整数 [rootlocalhost tmp]# num1$[41] [rootlocalhost tmp]# echo …

子类的构造与析构过程

一、简介 父类,也称基类,其构造方法和析构方法不能被继承; 子类,也称派生类,继承父类的方法和属性,但要加入新的构造和析构函数。 二、构造与析构过程 构造:先调用父类——>再调用子类 析构&…

STM32 HAL高级定时器正交编码模式案例

STM32 HAL高级定时器正交编码模式案例 🔖基于stm32F030RBT6单片机采用高级定时器1,编码器模式,测试EC11编码器。 🎬EC11测试效果: 🌿STM32定时器编码器有3种映射模式: ✨本次采用的是上面的模式3&#x…

同城外卖跑腿小程序开发的关键步骤

随着快节奏的生活方式和数字化技术的不断发展,外卖和跑腿服务变得越来越受欢迎。为了满足这一需求,越来越多的创业者和企业开始着手开发同城外卖跑腿小程序。本文将详细介绍同城外卖跑腿小程序开发的关键步骤,帮助您了解如何成功创建一个具有…

【Cesium】绘制线、面、体

文章目录 墙矩形长方体不规则图形椭圆椭圆柱正圆圆柱圆锥不规则多边形柱一串糖葫芦?带洞的矩形一系列矩形、圆形贴地的线围墙宽线宽线的体复杂线状体一根水管 墙 entities.add({wall: {id:"wall",positions: Cesium.Cartesian3.fromDegreesArray([-95.0,5…

java智慧工地云平台源码,以物联网、移动互联网技术为基础,结合大数据、云计算等,实现工程管理绿色化、数字化、精细化、智能化的效果

智慧工地将更多人工智能、传感技术、虚拟现实等高科技技术植入到建筑、机械、人员穿戴设施、场地进出关口等各类物体中,围绕人、机、料、法、环等各方面关键因素,彻底改变传统建筑施工现场参建各方现场管理的交互方式、工作方式和管理模式,智…

结构体内存分配与编译器对齐数

一、编译器对齐数 先说一个编译器的概念:对齐数。 1、对于基本类型的数据成员: 结构体的成员的对齐数min(编译器对齐数,成员占内存大小) 例如VS编译器对齐数位8,那么int型数据对齐数就为4,doubl…

如何理解OSI七层模型?

一、是什么 OSI (Open System Interconnect)模型全称为开放式通信系统互连参考模型,是国际标准化组织 ( ISO ) 提出的一个试图使各种计算机在世界范围内互连为网络的标准框架 OSI 将计算机网络体系结构划分为七层,每一层实现各自…

20T算力打造轻地图方案,这家智驾公司持续内卷

作者 | 张祥威 编辑 | 德新 行泊一体的话题热度不减。 近日,宏景智驾核心产品单SoC行泊一体解决方案已全场景跑通,可实现高速导航辅助驾驶。 在推进量产的同时,宏景智驾也在布局BEV感知、轻高精地图甚至去高精地图的智驾方案,同…

IPv6基础

1. IPv6概述 基本概念 IPv6(Internet Protocol Version 6)也被称为IPng(IP Next Generation)。它是Internet工程任务组IETF(Internet Engineering Task Force)设计的一套规范,是IPv4&#xff…

influxDB学习记录

一、官网 influxdb官方英文文档:https://docs.influxdata.com/influxdb/v1.8/query_language/spec/influxdb中文文档:https://jasper-zhang1.gitbooks.io/influxdb/content/ 二、centos安装与基本配置 influxdb安装与基本配置(centos) 三…

iPhone上的闹钟不工作的原因不单一,可能多达十种

这篇文章将带你了解如何让iPhone闹钟重新工作。 调大音量 这听起来可能很明显,但不要跳过这一步。使用手机侧面的按钮可以在不增加闹钟音量的情况下提高音量。这是因为iPhone可以让你用相同的按钮控制两组完全不同的声音。 例如,如果你打开了音乐流媒…

CMMI V2.2模型介绍

1、CMMI模型内容编排 模型内容主要由三篇组成,包括概述、实践域(PA)和附录,共分为6个章节。 章节 标题说明篇章:概述第1章关于CMMI V2.0概述CMMI V2.0产品套件,包括模型的执行摘要。第2章 成…

mysql—面试50题—1

注:面试50题将分为5个部分,每部分10题 一、查询数据 学生表 Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1990-01-01 , 男); insert into Student …

S-Clustr(影子集群)新增Nets3e插件,实现一对多主机拍照

公告 项目地址:https://github.com/MartinxMax/S-Clustr 项目地址:https://github.com/MartinxMax/Nets3e 环境 这里有一台Windows主机,我们拿到了Webshell 依赖安装 根据你的主机类型选择依赖安装程序。 配置Nets3e 安装完成后,我们需要启动Nets3e服务端(这边…