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

目录

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 的时候发现报错,看了日志才发现这个问题。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[OC]深拷贝与浅拷贝

深拷贝与浅拷贝 深拷贝与浅拷贝 深拷贝与浅拷贝定义按照类型说明非容器类对象的深拷贝与浅拷贝不可变字符串可变类型字符串 容器类对象的深浅拷贝自定义类对象的深浅拷贝容器类对象的完全深拷贝1.copyItems2.解档和归档 定义 深拷贝:简单来说就是创建一个与被复制对…

虚拟化技术[2]之存储虚拟化

存储虚拟化 存储虚拟化简介存储虚拟化一般模型存储虚拟化实现方式基于主机存储虚拟化基于存储设备存储虚拟化基于网络存储虚拟化 案例分析:VMFSVMFS功能 存储虚拟化简介 存储虚拟化:将存储网络中的各个分散且异构的存储设备按照一定的策略映射成一个统一…

webpack5生产模式

生产模式 生产模式准备 开发模式和生产模式有不同的 配置文件 2修改webpack.prod.js文件修改webpack.dev.js文件 修改webpack.dev.js文件 1》修改输出路径为undefined 2》将绝对路径进行修改,进行回退 此时文件的执行命令为 修改webpack.prod.js文件 1》修改绝…

LangChain笔记

很好的LLM知识博客: https://lilianweng.github.io/posts/2023-06-23-agent/ LangChain的prompt hub: https://smith.langchain.com/hub 一. Q&A 1. Q&A os.environ["OPENAI_API_KEY"] “OpenAI的KEY” # 把openai-key放到环境变量里&…

【Linux】Linux的基本指令_2

文章目录 二、基本指令8. man9. nano 和 cat10. cp11. mv12. echo 和 > 和 >> 和 <13. more 和 less14. head 和 tail 和 | 未完待续 二、基本指令 8. man Linux的命令有很多参数&#xff0c;我们不可能全记住&#xff0c;我们可以通过查看联机手册获取帮助。访问…

深入编程逻辑:从分支到循环的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、编程逻辑的基石&#xff1a;分支与循环 分支逻辑详解 代码案例&#xff1a;判断整数是…

Unity 资源 之 限时免费的Lowpoly农场动物,等你来领!

Unity资源 之 Lowpoly farm animals 农村动物 前言资源包内容领取兑换码 前言 Unity 资源商店为大家带来了一份特别的惊喜——限时免费的农场动物资源&#xff01;这是一个充满趣味和实用性的资源包。 资源包内容 在这个资源包中&#xff0c;你可以找到丰富多样的低地养殖动物…

685. 冗余连接 II

685. 冗余连接 II 问题描述 在本问题中&#xff0c;有根树指满足以下条件的 有向 图。该树只有一个根节点&#xff0c;所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点&#xff0c;而根节点没有父节点。 输入一个有向图&#xff0c;该…

mac 安装Node.js

文章目录 前言一、Node是什么&#xff1f;二、下载三、安装四、验证总结 前言 Node.js是一个开源、跨平台的JavaScript运行时环境&#xff0c;它允许开发者在服务器端运行JavaScript代码。Node.js是基于Chrome V8 JavaScript引擎构建的&#xff0c;它的设计目标是提供一种高效…

这样的直男程序员,活该你单身一万年!

#分享下相亲时遇到过哪些奇葩现象# 这样的直男程序员&#xff0c;活该你单身一万年&#xff01; 在丛丛脱单小程序上相亲&#xff0c;遇到一个程序员妹纸&#xff0c;于是有了如下的真实故事&#xff1a; 妹子说她是程序员来着&#xff0c;想着我也是程序员&#xff0c;就想交…

基于xilinx FPGA的 FFT IP使用例程说明文档(可动态配置FFT点数,可计算信号频率与幅度)

目录 1 概述2 IP examples功能3 IP 使用例程3.1 IP设置3.2 fft_demo端口3.3 例程框图3.4 仿真结果3.5 仿真验证得出的结论4 注意事项5例程位置 1 概述 本文用于讲解xilinx IP 的FFT ip examples的功能说明&#xff0c;方便使用者快速上手。 参考文档&#xff1a;《PG109》 2 …

MySQL大表删除方案

1.问题 在生产环境中&#xff0c;执行大表删除操作时&#xff0c;很容易因为占用了大量io资源导致其他事务被阻塞&#xff0c;最终事务不断堆积导致MySQL挂掉。 2.drop命令 drop命令&#xff0c;MySQL主要干了两件事&#xff1a; 清除buffer pool缓冲&#xff08;内存&…

Java控制台实现斗地主的洗牌和发牌功能

一、题目要求 有3个玩家&#xff1a;A&#xff0c;B&#xff0c;C。底牌有三张牌&#xff0c;每个人共17张牌&#xff0c;共&#xff08;17*3354&#xff09;张牌&#xff0c;实现洗牌与发牌&#xff0c;只在控制没有实现UI可视化。 二、思路 1、用List集合存储所有的扑克牌。…

表查询基础【mysql】【表内容 增,删,改,查询】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客MySQL之旅_花果山~程序猿的博客-CSDN博客Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我…

MTK下载AP

只升级选Firemare Upgrade &#xff0c;点下载后&#xff0c;关机下插入USB

多线程案例(线程池)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:<计算坤是如何工作的>&#x1f649; &#x1f439;今日诗词:百年兴衰皆由人, 不由天&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…

Android11热点启动和关闭

Android官方关于Wi-Fi Hotspot (Soft AP) 的文章&#xff1a;https://source.android.com/docs/core/connect/wifi-softap?hlzh-cn 在 Android 11 的WifiManager类中有一套系统 API 可以控制热点的开和关&#xff0c;代码如下&#xff1a; 开启热点&#xff1a; // SoftApC…

计算机设计大赛

目录 1.1需求分析 2.1概要设计 3.1软件界面设计&#xff1a; 4.1代码开源 1.1需求分析 1.1 产品开发本说明&#xff1a; 在如今每人都会扔出许多垃圾&#xff0c;在一些地方大部分垃圾能得到卫生填埋、焚烧等无害化处理&#xff0c;而更多的垃圾则是简单的掩埋&#xff…

3D牙科网格分割使用基于语义的特征学习与图变换器

文章目录 3D Dental Mesh Segmentation Using Semantics-Based Feature Learning with Graph-Transformer摘要方法实验结果 3D Dental Mesh Segmentation Using Semantics-Based Feature Learning with Graph-Transformer 摘要 本文提出了一种新颖的基于语义的牙科网格分割方…

计算机毕业设计 | SSM汽车租赁系统(附源码)

1&#xff0c; 概述 1.1 课题背景 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。用户生活水平的不断提高&#xff0c;日常生活中用户对汽车租赁系统方面的要求也在不断提高&#xff0c;需要汽车租赁系统查询的人数更是不断增加&#xff0c;使得汽车租赁系统的…