.net项目使用Docker部署(包括解决后台验证码,部署后不显示的问题)

news/2025/1/18 6:58:39/文章来源:https://www.cnblogs.com/zhaoshiyi/p/18339201

Vue部署到Docker

参考文档:手把手教你用 Docker 部署 Vue3 项目_docker部署vue3项目-CSDN博客

参考文档:dockerfile 部署前端vue项目_vue dockerfile-CSDN博客

nginx文档:使用docker安装nginx - 静以修身俭以养德 - 博客园 (cnblogs.com)

结合使用了两个文档的方法和DockerFIle

区别

第一篇使用的是删除nginx默认的 default.conf配置文件然后通过DockerFile进行替换

server {listen       80;server_name  localhost; # 修改为docker服务宿主机的iplocation / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html =404;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}

DockerFile

FROM nginx:该镜像是基于nginx:latest镜像构建的MAINTAINER onesummer:添加说明RUN rm /etc/nginx/conf.d/default.conf:删除目录下的default.conf文件ADD default.conf /etc/nginx/conf.d/:将default.conf复制到/etc/nginx/conf.d/下,用本地的default.conf配置来替换nginx镜像里的默认配置COPY dist/ /usr/share/nginx/html/:将项目根目录下dist文件夹(构建之后才会生成)下的所有文件复制到镜像/usr/share/nginx/html/目录下

第二篇是通过替换nginx默认的nginx.conf使用DockerFIle进行替换

同时需要去创建三个文件夹,然后去替换默认的index

image-20240715010700670

 //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;server {listen       80;listen  [::]:80;client_max_body_size 20m; client_body_buffer_size 1m;#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html;}#生产环境接口反向代理配置location /stage-api/ {#保留代理之前的host 包含客户端真实的域名和端口号proxy_set_header    Host  $http_host;#保留代理之前的真实客户端ipproxy_set_header    X-Real-IP  $remote_addr;#这个Header和X-Real-IP类似,但它在多级代理时会包含真实客户端及中间每个代理服务器的IPproxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;#表示客户端真实的协议(http还是https)proxy_set_header X-Forwarded-Proto $scheme;#写后端服务端口proxy_pass http://192.168.1.164:29097/;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}}

Docker

FROM nginx# 作者信息
MAINTAINER lxp# 挂载目录
VOLUME /usr/share/nginx/html# 复制conf文件到路径
COPY ./conf/nginx.conf /etc/nginx/nginx.conf# 复制html文件到路径
COPY ./html /usr/share/nginx/html

结合

因为我是修改nginx.conf文件同时,并且不想要去创建额外的文件夹所以我就使用了两者结合的方法

image-20240715011323723

Dockerfile

FROM nginxMAINTAINER onesummerRUN rm /etc/nginx/nginx.conf  //删除默认的nginx.confADD nginx.conf /etc/nginx/   //添加nginx.confCOPY dist/ /usr/share/nginx/html/

因为我们使用的Element-admin所以需要对nginx.conf做出一定的修改,参照第二篇进行修改

vue3-element-admin: 🔥Vue3 + Vite5 + TypeScript + Element-Plus 构建的后台管理前端模板,配套接口文档和后端源码,vue-element-admin 的 Vue3 版本。 (gitee.com)结合官方的发布文档

image-20240715011700770

 
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;server {listen     80;server_name  localhost;location / {root /usr/share/nginx/html;index index.html index.htm;}# 反向代理配置location /prod-api/ {# vapi.youlai.tech 替换后端API地址,注意保留后面的斜杠 /proxy_pass http://101.200.241.33:8081/; }
}}

在docker 工作目录下运行命令

docker build -t zhongbeida-nginx-test:v1 .!!! 一定注意后面有一个点  !!!docker 会基于dockerfile文件中得配置  对项目进行生成镜像-t  后面是自定义得镜像名称
冒号后是自定义得镜像版本

打包镜像后 启动容器

docker run -d --name zhongbeida-font-nginx -p 28086:80  --restart always zhongbeida-nginx-test:v1
--name 后面是你要对启动得容器得命名-p 冒号前面是你要映射得端口号 最后是上一步打包得镜像名称和版本

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

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

相关文章

NewStarCTF WEEK5|WEB Yes Pickle

下载附件 # -*- coding: utf-8 -*- import base64 import string import random from flask import * import jwcrypto.jwk as jwk import pickle from python_jwt import *app = Flask(__name__) # 创建 Flask 应用实例def generate_random_string(length=16):""&q…

数仓sql场景:迭代求结果问题

1.需求2.sql实现 这道题先需要去分析结果集,本质上是一个迭代累加的过程,先要得到如下结果如果在面试数仓中实现了以上结果,基本上面试官会很通过,也在短时间内可以实现,实现sql如下with tb as ( select 1 as s,a as pv union all select 2 as s,b as pv union all select…

Vue 使用 vue-drag-resize 实现拖拽和随意缩放大小及安装报错处理

一、vue-drag-resize的安装yarn add vue-drag-resize 下面是错误解决方案: TypeError: Cannot read properties of undefined (reading ‘_c’) 解决方案: 在引入时加上“/src”:import VueDragResize from "vue-drag-resize"; 改成 import VueDragResize from …

PgStatement的executeCachedSql(String sql, int flags, String @Nullable [] columnNames)方法的学习

方法代码如下: private boolean executeCachedSql(String sql, int flags,String @Nullable [] columnNames) throws SQLException {//第一部分PreferQueryMode preferQueryMode = connection.getPreferQueryMode();boolean shouldUseParameterized = false;//第二部分QueryEx…

初识RestAssured

1、接口测试的本质 不在于创造,在别人写好的情况下去调用--发起请求,校验结果 2、接口测试的四要素URL地址 请求方式 请求参数 返回值3、RestAssured介绍 RestAssured的依赖导入点击查看代码 <dependencies> <!-- Rest-Assured核心库 --> <dependency> …

ximo基础脱壳教程的脱壳学习记录

ximo基础脱壳教程的脱壳学习记录 之前遇到壳直接脚本自动化处理了,现在初步学习一下手脱壳。(中间一直用的x32dbg,后来有些壳换od脱了) 参考教程https://www.52pojie.cn/thread-582852-1-1.html 1、手脱UPX壳 查壳方法1:单步跟踪 就是一直单步走,如果是向下跳转就跳,如果…

.net 8 应用在docker容器中创建失败 Failed to create CoreCLR, HRESULT: 0x80070008

在UAT环境中docker容器里部署.net8 应用没问题,在dev环境docker run 启动失败,并报错 Failed to create CoreCLR, HRESULT: 0x80070008以下文章解决了我遇到的问题,感谢 https://www.cnblogs.com/cyq1162/p/17981333 处理办法 增加--security-opt seccomp=unconfined docker…

【AI冰封挑战】搭档函数计算,“冰”封你的夏日记忆

在 AI 绘画领域,Stable Diffusion、 WebUI、Midjourney 等工具各领风骚,但 ComfyUI 以其独特的自动化工作流机制,自问世以来便迅速崭露头角,成为众多应用开发者和艺术创作者的新宠。它不仅革新了 AI 生图的创作流程,更以高效的自动化水平,为AI绘画领域开辟了全新的篇章。…

IT事件经理在数字企业中的角色和责任

什么是IT事件经理? IT事件经理有时也被称为事件指挥官,他们承担着管理组织事件响应的总体责任,从委派各种事件响应任务到与每个利益相关者进行沟通和协调。 示例:当一个全球性的电子商务平台在一次销售活动中流量激增,数以百万计的用户涌入网站时,不可预见的技术故障开始…

maven项目pom文件查看架包依赖处理架包冲突问题

在运行maven项目的时候由于依赖冲突出现如下问题 项目中依赖了多个不同版本的slf4j类库,我们可以使用dependency:tree命令: 找到冲突的依赖,向上找到引入依赖的根源,在对应的pom文件里,添加 <exclusions> 标签即可<dependency><groupId>com.baidu.ai…

Tarjan算法和连通性相关(二)

上一篇博客我们介绍了强连通分量,本文我们继续学习与连通性有关的一些概念 割点什么是割点?对于一个无向图,如果把一个点删除后这个图的极大连通分量数增加了,那么这个点就是这个图的割点 我们画个图理解一下:在这个图中,如果我们把 3 这个点给删除掉,那么这张图就会被拆…

Kotlin 字符串教程:深入理解与使用技巧

Kotlin中的字符串用于存储文本,定义时使用双引号包围字符序列,如`var greeting = "Hello"`。Kotlin能自动推断变量类型,但在未初始化时需显式指定类型,如`var name: String`。可通过索引访问字符串元素,如`txt[0]`获取首字符。字符串作为对象,拥有属性和方法,…