docker 上面安装 Nginx 以及设置访问 IP 就可以访问前端工程

news2024/12/28 21:27:24

目录

docker 运行 Nginx

第一步:搜索下镜像

首先可以使用 docker search nginx 搜索 nginx 服务

docker search nginx

相关控制台输出:

NAME                              DESCRIPTION                                     STARS               OFFICIAL    AUTOMATED
nginx                             Official build of Nginx.                        11468               [OK]
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con    1603                                
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of    715                                [OK]
bitnami/nginx                     Bitnami nginx Docker Image                      66                                 [OK]
linuxserver/nginx                 An Nginx container, brought to you by LinuxS    62
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp    45                                 [OK]
nginx/nginx-ingress               NGINX Ingress Controller for Kubernetes         20
schmunk42/nginx-redirect         A very simple container to redirect HTTP tra    16                                 [OK]
...

第二步: 安装

这里我们安装官方的 nginx 服务

# 安装
docker pull nginx

# 查看本地镜像

第三步:使用挂载的方式安装

使用挂载的方式将 nginx 的配置文件、html 目录挂载到宿主机上面

# 第一步: 创建挂载文件夹
mkdir -p /apps/nginx/html
mkdir -p /apps/nginx/logs

# 第二步:启动一个 nginx
docker run -d -p 80:80 --name nginx --net host nginx

# 第三步:copy 文件到指定的挂载路径  docker cp 容器id:容器的文件 需要拷贝到的地方
docker cp nginx:/etc/nginx/conf.d/ /apps/nginx/
docker cp nginx:/etc/nginx/nginx.conf /apps/nginx/
docker cp nginx:/usr/share/nginx/html/ /apps/nginx/
docker cp nginx:/var/log/nginx/ /apps/nginx/logs/

# 第四步:停止容器
docker stop nginx

# 第五步:删除容器
docker rm nginx

# 第六步:重新运行容器
docker run --name=nginx \
           -p 80:80 \
           -p 443:443 \
           -v /apps/nginx/conf.d:/etc/nginx/conf.d \
           -v /apps/nginx/nginx.conf:/etc/nginx/nginx.conf \
           -v /apps/nginx/html:/usr/share/nginx/html \
           -v /apps/nginx/logs:/var/log/nginx \
           -v /apps/nginx/cert:/etc/nginx/cert \
           -e TZ=Asia/Shanghai \
           --privileged=true \
           --restart=always \
           -d nginx

这里我们是访问 80端口 就可以访问到 nginx 了。

测试配置文件格式

docker exec nginx nginx -t

重启 nginx

docker exec nginx nginx -s reload

前端项目打包

我这边是之前的一个 angular 项目,公司使用的一个老项目了,用于测试下,具体的打包方式可以按照大伙的实际项目来就好了,这个都不算特别复杂的。

我们正常情况下是在访问的 ip 后面加上工程名去访问,这样子就可以访问到对应的工程了。那么如果现在是一个官网,或者是就是想访问 ip 就可以工程呢?

# 打包的时候增加工程名,这个是访问 http://ip/erp
ng build --base-href /erp/ --prod 

为了能实现我们的需求,那么我们打包的时候需要这样子打包,将 --base-href 设置为 /.

ng build --base-href /. --prod 

打包

Nginx 配置

实际修改

修改 default.conf, 如果比较熟悉的话,就看到这里就可以了,后面的具体部分是可以省略的。
修改根路径的访问地址

location / {
    root   /usr/share/nginx/html/dist;
    index  index.html index.htm;
}

上传项目文件到服务器上面

由于我们上面是挂载了 html 文件的路径,这个就是类似于 tomcat 目录下面的 webapps 路径(如果不清楚的,可以忽略,这个不重要)。这里我使用的是 FileZilla 这个工具
上传文件
完整的工具截图
完整的工具截图

修改 nginx 配置

这里先总结下哈,我们修改的是 nginx/conf.d/default.conf 这个文件内容,具体怎么回事,就向下看把。

首先我们看到有这个配置文件 nginx.conf,我们先看看具体的内容是啥?
nginx.conf
nginx.conf 文件内容


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

	# 这里是引入了我们的各个配置文件
    include /etc/nginx/conf.d/*.conf;
}

include /etc/nginx/conf.d/*.conf; 可以看到就是需要去找 conf.d 下的 conf 文件,这个时候有细心的同学就会说,怎么这个路径是 /etc/nginx/conf.d/ 下的,我们不是挂载出来了吗?其实这个地方是在 docker 容器中的地址,并不是我们宿主机上面的。

default.conf

然后我们修改下对应的配置文件 default.conf

default.conf

location / {
    root   /usr/share/nginx/html/dist;
    index  index.html index.htm;
}

这里需要改的是 docker 容器中的路径,如果不是的话,这里就会报错,最开始我没有意思到这个问题,在重启 nginx 的时候发现报错,看了日志才发现这个问题。

最后上传一张搞定的图片:
上传图片

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

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

相关文章

电子商务网站(网上商店PetShop)

PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。PetShop随着版本的不断更新,至现在基于.Net2.0的PetShop 4.0为止,整个设计逐渐变得成熟而优雅,有很多可以借鉴之处。PetShop是一个小型的项目,系统架构与代码…

统计信号处理基础 习题解答10-2

题目 两个随机变量x和y,如果联合PDF分解为: 那么称他们为条件独立的。在上式中z是条件随机变量。 我们观察 其中, , 是相互独立的。证明和是条件独立的。给出条件变量是A。和是无条件独立么?也就是 成立么?为了回答这个问题&…

flutter项目运行报错Exception: Gradle task assembleDebug failed with exit code 1各种报错合集

1.报错 Launching lib/main.dart on sdk gphone64 arm64 in debug mode... Running Gradle task assembleDebug... Exception in thread "main" java.net.ConnectException: Operation timed out at java.base/sun.nio.ch.Net.connect0(Native Method) at j…

【模版方法设计模式】

文章目录 模板方法设计模式模板方法的设计原则模板方法设计模式组成部分代码实现抽象类实现具体实现类执行 模板方法设计模式 模版方法设计模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,而将一…

欢乐钓鱼大师游戏攻略:自动钓鱼技巧!

《欢乐钓鱼大师》是一款极具趣味性和挑战性的钓鱼模拟游戏,为玩家提供了一个体验钓鱼乐趣的虚拟世界。从湖泊到河流,再到广袤的海洋,游戏中的各种钓场让人流连忘返。无论是新手钓友,还是经验丰富的老钓手,都可以在游戏…

VMware虚拟机安装Windows server 2022超详细教程

文章目录 ISO下载安装步骤总结 ISO下载 链接:https://pan.baidu.com/s/19Z2q9KFKZq0pLisPZLn7_g 提取码:3pgn 安装步骤 安装完打开虚拟机后发现引导程序无法正常执行 解决方法见我的上一篇文章:http://t.csdnimg.cn/PzfOz 问题解决完后正常…

Dbs封装_连接池

1.Dbs封装 每一个数据库都对应着一个dao 每个dao势必存在公共部分 我们需要将公共部分抽取出来 封装成一个工具类 保留个性化代码即可 我们的工具类一般命名为xxxs 比如Strings 就是字符串相关的工具类 而工具类 我们将其放置于util包中我们以是否有<T>区分泛型方法和非泛…

如何恢复未保存或丢失的Word文档?

许多用户会遇到Word文档未保存而关闭的问题。实际上&#xff0c;您不会立即丢失未保存的文档数据。请不要对文档进行进一步的更改&#xff0c;例如修改并再次保存。您仍然有机会恢复未保存的Word文档。有一些方法可以帮助您恢复未保存的 Word 文档。 如果您不幸遇到这样的问题…

C#基础语言

​​​​ 目录 一个c# 程序主要包括以下部分&#xff1a;​​​​​​​ 标识符 C# 关键字 C# 数据类型 值类型&#xff08;Value types&#xff09; 引用类型&#xff08;Reference types&#xff09; 对象&#xff08;Object&#xff09;类型 动态&#xff08;Dynam…

手撕C语言题典——消失的数字

目录 前言 一&#xff0c;思路 1)排序查找 2&#xff09;数据求和&#xff0c;依次减去中值 3&#xff09; 异或 二&#xff0c;异或的代码实现 前言 依旧是一道力扣上的题&#xff0c;通过不同思路的不同时间复杂度来分析&#xff0c;让我们看看有什么不同。 面试题 17…

云动态摘要 2024-05-26

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]大模型知识引擎体验招募 腾讯云 2024-05-21 大模型知识引擎产品全新上线&#xff0c;为回馈新老客户&#xff0c;50万token免费送&#xff0c;开通服务即领取&#xff01; 云服…

1.6 什么是程序-编译与调试

目录 1 程序的作用 2 新建项目及编译运行 2.1 新建项目 2.2 HelloWorld 程序说明 2.3 printf 打印输出 2.4 注释 3 程序的编译过程及项目位置 4 断点及调试窗口设置 5 学习C语言后的境界 1 程序的作用 如下图所示&#xff0c;我们编写了一个可以做加法的程序&#xf…

行业分析---造车新势力之蔚来汽车

1 前言 在之前的博客中&#xff0c;笔者分析了苹果《行业分析---我眼中的Apple Inc.》&#xff0c;苹果已经成为世界级的公司。随后也分析了电动汽车公司特斯拉《行业分析---马斯克的Tesla》&#xff0c;特斯拉也在不断成长。目前能分析的新能源汽车公司不多&#xff0c;小米汽…

C++笔记:Hash Function 散列函数

1. Hash Function 散列函数 简单的Hash实现&#xff1a; class CustomerHash { public:size_t operator()(const Customer& c) const {return hash<std::string>()(c.fname) // first namehash<std::string>()(c.lname) // last namehash<long>()(…

Topk问题以及二叉树的三种层序遍历和基本操作

一、Topk问题 1、问题描述 TOP-K问题&#xff1a;即求数据结合中前K个最大的元素或者最小的元素&#xff0c;一般情况下数据量都比较大。 比如&#xff1a;专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 2、思路 对于Top-K问题&#xff0c;能想到的最简单直接的…

C++数据结构——哈希桶HashBucket

目录 一、前言 1.1 闭散列 1.2 开散列 1.3 string 与 非 string 二、哈希桶的构成 2.1 哈希桶的节点 2.2 哈希桶类 三、 Insert 函数 3.1 无需扩容时 3.2 扩容 复用 Insert&#xff1a; 逐个插入&#xff1a; 优缺点比对&#xff1a; 第一种写法优点 第一种写法…

0成本的副业兼职,虚拟资源项目,1单利润49,操作简单变现快

最新刷某音时&#xff0c;我意外地发现了一位同行&#xff0c;他正在出售一份某音运营和直播的资料。然而&#xff0c;他销售这份资料的方式非常独特。他将这些所谓的某音运营资料全部打印出来。 周周近财&#xff1a;让网络小白少花冤枉钱&#xff0c;赚取第一桶金 每个视频的…

GESP等级大纲

CCF编程能力等级认证概述 CCF编程能力等级认证&#xff08;GESP&#xff09;为青少年计算机和编程学习者提供学业能力验证的规则和平台。GESP覆盖中小学阶段&#xff0c;符合年龄条件的青少年均可参加认证。C & Python编程测试划分为一至八级&#xff0c;通过设定不同等级…

CAD二次开发(2)-将直线对象添加到CAD图形文件

1. 准备工作 创建一个类库项目&#xff0c;如下&#xff1a; 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个&#xf…