Docker最简单的来部署前端vue打包好的h5代码

news2024/11/15 23:21:58

Docker最简单的来部署前端vue打包好的h5代码

前言

是不是想在服务器上部署好几个前端页面,并且也不想让各个页面之间进行隔离,还有就是想要一键部署,实时更新到服务区上,那这篇文章可能帮到您

这里也得选择一个软件叫Idea,这就是个神器

正文

1.首先得先在前端打包的h5代码,同级别的根目录下新建一个Dockerfile文件,Dockerfile的文件的内容就是下面这个

# 使用 nginx 作为基础镜像
FROM nginx:latest

# 将当前目录下的前端文件复制到容器内的 /usr/share/ng>inx/html 目录下
COPY dist /usr/share/nginx/html

# 复制自定义的 Nginx 配置文件到容器内部
COPY nginx.conf /etc/nginx/nginx.conf

# 定义容器运行时需要暴露的端口号
EXPOSE 80

# 容器启动时执行的命令
CMD ["nginx", "-g", "daemon off;"]

2.其次就是得配置一下nginx.conf这个文件,配置文件如下

worker_processes  1;

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

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   # 限制body大小
   client_max_body_size 100m;

   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;

   upstream server {
       ip_hash;
       # gateway 地址
       server 192.168.8.204:30000;
       # server 127.0.0.1:8081;
   }

   server {
       listen       80;
       server_name  localhost;

       # https配置参考 start
       #listen       443 ssl;

       # 证书直接存放 /docker/nginx/cert/ 目录下即可 更改证书名称即可 无需更改证书路径
       #ssl on;
       #ssl_certificate      /etc/nginx/cert/xxx.local.crt; # /etc/nginx/cert/ 为docker映射路径 不允许更改
       #ssl_certificate_key  /etc/nginx/cert/xxx.local.key; # /etc/nginx/cert/ 为docker映射路径 不允许更改
       #ssl_session_timeout 5m;
       #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       #ssl_prefer_server_ciphers on;
       # https配置参考 end

       # 演示环境配置 拦截除 GET POST 之外的所有请求
       # if ($request_method !~* GET|POST) {
       #     rewrite  ^/(.*)$  /403;
       # }

       # location = /403 {
       #     default_type application/json;
       #     return 200 '{"msg":"演示模式,不允许操作","code":500}';
       # }

       # 限制外网访问内网 actuator 相关路径
       location ~ ^(/[^/]*)?/actuator(/.*)?$ {
           return 403;
       }

       location / {
           root   /usr/share/nginx/html;
           try_files $uri $uri/ /index.html;
           index  index.html index.htm;
       }

       location /api/ {
           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://192.168.8.204:30000/api/;
       }

       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }
   }
}

3.只需要修改这个文件的代理地址和路径就行,其中就是这里面的
这个地址就是放到docker里面的地址,这个可以不动,因为在docker里面放下了这个。

4.添加要代理的路由,还有要代理的地址,进行重定向地址
这样就可以代理前端H5的代码了

5.弄好这两个,现在就得打包运行这个Dockerfile文件了,我这里是使用的Idea来进行打包和上传的上传完成后,就会在目标服务器上看到这个镜像,然后使用Docker容器启动也行,使用docker-composed启动也行,下面就是docker-composed启动的代码

version: '3'

services:
 jnpf-web:
   image: jnpf-web:latest
   container_name: web
   networks:
     - jnpf-cloud
   ports:
     - "8081:80"
networks:
 jnpf-cloud:

通过上面这个docker-composed模板就可以启动,当然也可以使用docker命令来启动docker run -d -p 8082:80 --name jnpf-web jnpf-web这个启动命令,启动了jnpf-web镜像,并且也起名容器为jnpf-web

6.经过上面的说明,就已经能正常部署前端代码了

后记

已经完成上面的操作之后,就能正常进行容器的启动了,并且各个容器之间并不排斥,只需要更改你的映射端口就行,比如启动redis库,那你想启动几个都无所谓

如果我的博客帮助到了您,您可以到我的博客https://blog.csdn.net/weixin_57228276或者微信公众号搜索幸识SQ,在那里可以找到我,里面也有更多的优秀文章

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

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

相关文章

Web3的新商业综合体——SMT震撼来袭!

SMT元宇宙应用生态平台,致力于打造一个Web3.0的新商业综合体。作为一个基础公链系统,SMT各项性能能够完全满足现在当下的各种应用,以及它们的部署。 用区块链技术和新的商业模式体现P2E并实现一个共建共享的理念,重塑大众生活的衣…

Python Qt学习(九)MainWindow

源代码: # -*- coding: utf-8 -*-# Form implementation generated from reading ui file qt_mainwindow.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do n…

python面试题合集(一)

python技术面试题 1、Python中的幂运算 在python中幂运算是由两个 **星号运算的,实例如下: >>> a 2 ** 2 >>> a 4我们可以看到2的平方输出结果为4。 那么 ^指的是什么呢?我们用代码进行演示: >>>…

音频——I2S 右对齐模式(四)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S right时序图逻辑分析仪抓包 I2S right I2S 右对齐标准 也叫日本格式,sony 格式。相比于标准左对齐格式,标准右对齐的不足在于接收设备必须事先知…

奇舞周刊第 504 期:谷歌浏览器 Chrome 117 Beta 又上新功能,爱了爱了!

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 谷歌浏览器 Chrome 117 Beta 又上新功能,爱了爱了! Chrome 117 Beta 版本新增了 CSS 网格子网格 (subgrid)、入场和出场动画支持,以及 CSS、数组…

TiDB 一栈式综合交易查询解决方案获“金鼎奖”优秀金融科技解决方案奖

日前,2023“金鼎奖”评选结果揭晓, 平凯星辰(北京)科技有限公司研发的 TiDB 一栈式综合交易查询解决方案获“金鼎奖”优秀金融科技解决方案奖 , 该方案已成功运用于 多家国有大行、城商行和头部保险企业 。 此次获奖再…

企业名片如何制作二维码?一招教你在线制作二维码名片

想要制作企业二维码名片时要怎么操作呢?现在的企业为了节省资源都开始使用无纸化办公了。当一个企业想要使用电子版名片的时候应该怎么制作呢?可以将企业联系方式、邮箱、地址等做成二维码图片,扫码就能在线查看企业信息。这时候,…

【leetcode 力扣刷题】数学题之计算次幂//次方:快速幂

利用乘法求解次幂问题—快速幂 50. Pow(x, n)372. 超级次方 50. Pow(x, n) 题目链接:50. Pow(x, n) 题目内容: 题目就是要求我们去实现计算x的n次方的功能函数,类似c的power()函数。但是我们不能使用power()函数直接得到答案,那…

AI 也有冷静期?

阅读本文大概需要 1.31分钟。 上一次听说「冷静期」这个词,还是大家都在讨论「离婚冷静期」对时候,最近时常看到「冷静期」,缘于大家所讨论的 AI 热度下降事情,俗称「AI 冷静期」。 1、 上半年,每隔一段时间&#xff0…

无涯教程-JavaScript - NORMSDIST函数

NORMSDIST函数替代Excel 2010中的NORM.S.DIST函数。 描述 该函数返回标准正态累积分布函数。分布的平均值为0(零),标准偏差为1。使用此功能代替标准法线区域的表格。 语法 NORMSDIST (z)争论 Argument描述Required/OptionalZThe value for which you want the distributio…

【OpenCV入门】第八部分——滤波器

文章结构 图像平滑处理均值滤波器中值滤波器高斯滤波器双边滤波器拉普拉斯高通滤波器 图像平滑处理 图像平滑处理是指在尽量保留原图像信息的情况下,去除掉图像内部的噪声(分布不均匀的、高亮度的像素点)。而用于图像平滑处理的工具就是滤波…

Qt +VTK+Cmake 编译和环境配置(第一篇 采坑)

VTK下载地址:https://vtk.org/download/ cmake下载地址:https://cmake.org/download/ 版本对应方面,如果你的项目对版本没有要求,就不用在意。我就是自己随机搭建的,VTK选择最新版本吧,如果后面其他的库不…

HttPClient简介及示例:学习如何与Web服务器进行通信

文章目录 前言一、引入依赖二、使用步骤1.创建被调用者2.创建调用者三、结果被调用者服务:调用者服务: 总结 前言 欢迎来到本篇博客,这是一个关于HttPClient的入门案例的指南。🎉 在今天的网络世界中,与服务器进行数据…

数据挖掘导论学习笔记1(第1 、2章)

参考:https://blog.csdn.net/u013232035/article/details/48281659?spm1001.2014.3001.5506 和《数据挖掘导论》学习笔记(第1-2章)_时机性样本_schdut的博客-CSDN博客 第1章 绪论 数据挖掘是一种技术,它将传统的数据分析方法…

【LeetCode】剑指 Offer <二刷>(4)

目录 题目:剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 10- I. 斐波那契数列 - 力扣&am…

FFmpeg5.0源码阅读——FFmpeg大体框架(以GIF转码为示例)

摘要:前一段时间熟悉了下FFmpeg主流程源码实现,对FFmpeg的整体框架有了个大概的认识,因此在此做一个笔记,希望以比较容易理解的文字描述FFmpeg本身的结构,加深对FFmpeg的框架进行梳理加深理解,如果文章中有…

ROS机器人编程---------(二)ROS中的核心概念

ROS机器人编程 ROS中的核心概念 ROS的通信机制 在ROS中结点是最小单元,比如说机器人的遥控器可以作为一个控制结点,机器人上的摄像头也可以看作一个结点,ROS通过协调各个结点来实现 在启动任何ROS结点之前,都必须先启动ROS Mas…

【数据结构】 二叉树面试题讲解->贰

文章目录 🌏引言🎄[二叉树遍历](https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId60&&tqId29483&rp1&ru/activity/oj&qru/ta/tsing-kaoyan/question-ranking)🐱‍👤题目描述&#…

阿里云短信服务测试

测试时遇到下面的错误; {"Message":"测试专用签名和模板必须结合使用","RequestId":"59035729-FD2A-5618-A2BE-6CABD839B400","Code":"isv.SMS_TEST_SIGN_TEMPLATE_LIMIT"} 上网查了下才发现: 使用…

一些自己整理的工具实用参数

工具实用参数 sqlmap -u: 指定需要测试的目标URL(格式:http://www.example.com/test.php?id1) --cookie: 设置需要发送的 HTTP Cookie,例如:--cookie"sid123456;PHPSESSID654321" --threads:…