Docker 部署项目,真的太雅了~

大家好,我是南城余! 最近在找工作,正好手里有台服务器,之前项目上线用的宝塔部署项目上线,在公司实习了一年后,发现如今项目部署都使用的是容器化部署方案,也就是类似于和 Docker 一样的部署方案。今天一篇文章带大家用 Docker 部署前后端项目。

前端分别用域名和无域名实现了下。具体可以见下方步骤描述: <a name="LkpKO"></a>

1、后端

IDEA 打包,如下图:

image.png

<a name="zFeJ5"></a>

1.1、dockerfile

在任意目录下创建 Dockerfile 文件,如 /app,并上传这两个文件。

image.png

# 使用官方 Java 镜像作为基础镜像
FROM openjdk:8-jdk
​
# 设置容器内的工作目录
WORKDIR /app
​
# 复制本地文件到容器内的工作目录
COPY ./*.jar /app/app.jar
​
# 指定容器启动后执行的命令,这里使用 java 命令运行 Spring Boot 应用
CMD ["java", "-jar", "app.jar"]
​
# 暴露端口,如果 Spring Boot 应用使用了不同的端口,需要修改
EXPOSE 8001

<a name="T4Owj"></a>

1.2、构建镜像包

创建完成后,用docker build -t techmindwave-backend:1.0 .构建镜像包。 <a name="K9ImQ"></a>

1.3、启动容器

docker run -p 8001:8001 -d techmindwave-backend:1.0

此处,按照上方已经成功部署 若是云服务器,记得开放相应端口

image.png

<a name="RLmq5"></a>

2、前端(无域名)

<a name="K7oh3"></a>

2.1、Dockerfile

nginx.conf

# 使用官方 Nginx 镜像作为基础镜像
FROM nginx:latest
​
# 将本地的 Nginx 配置文件复制到镜像的配置文件目录
COPY ./nginx.conf /etc/nginx/nginx.conf
​
# 将构建好的前端静态文件复制到 Nginx 的 www 目录下
COPY ./dist /usr/share/nginx/html
​
events {}
​
http {server {listen 800; # 监听 800 端口## 添加上这个配置
​location / {try_files $uri $uri/ @router;index index.html;}
​location @router {rewrite ^.*$ /index.html last;}
​# 静态文件服务root /usr/share/nginx/html;index index.html;
​# 配置反向代理location /api {proxy_pass http://106.14.202.122:8001/;  # 将请求转发到指定地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
}
​

<a name="z5Pm0"></a>

2.2、构建镜像包

创建完成后,用docker build -t techmindwave-frontend:1.0 .构建镜像包。 <a name="HzZbg"></a>

2.3、启动容器

docker run -p 800:800 -d techmindwave-frontend:1.0

<a name="LluvQ"></a>

3、前端(有域名)

<a name="yS10S"></a>

3.1、Dockerfile
# 使用官方 Nginx 镜像作为基础镜像
FROM nginx:latest
​
# 将本地的 Nginx 配置文件复制到镜像的配置文件目录
COPY ./nginx.conf /etc/nginx/nginx.conf
​
# 将构建好的前端静态文件复制到 Nginx 的 www 目录下
COPY ./dist /usr/share/nginx/html
​
COPY ./default.conf /etc/nginx/conf.d/default.conf
​
#将ssl证书复制到容器中
copy ./certificates /etc/nginx/ssl
​
​
# Expose ports 80 and 443
EXPOSE 80
EXPOSE 443

** default.conf **

server {listen 80;server_name techmindwave.nanchengyu.cn;
​# Redirect HTTP to HTTPSreturn 301 https://$host$request_uri;
}
​
server {listen 443 ssl;server_name techmindwave.nanchengyu.cn;
​ssl_certificate /etc/nginx/ssl/nginx.pem;ssl_certificate_key /etc/nginx/ssl/nginx.key;
​ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;
​root /usr/share/nginx/html;index index.html;
​location / {try_files $uri $uri/ /index.html;}# 配置反向代理location /api {proxy_pass http://106.14.202.122:8001/;  # 将请求转发到指定地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
​

nginx.conf

user  nginx;
worker_processes  auto;
​
error_log  /var/log/nginx/error.log warn;
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;keepalive_timeout  65;
​include /etc/nginx/conf.d/*.conf;
}
​

<a name="y1LHf"></a>

3.2、构建镜像包

创建完成后,用docker build -t techmindwave-frontend:3.0 .构建镜像包。 <a name="ZgYtF"></a>

3.3、启动容器
docker run -d -p 80:80 -p 443:443 \-v ./certificates/nginx.pem:/etc/nginx/ssl/nginx.pem \-v ./certificates/nginx.key:/etc/nginx/ssl/nginx.key \--name my-nginx-container techmindwave-frontend:3.0

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

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

相关文章

对于图片转3d人脸方面的研究

1.一个开源的可以运行的项目&#xff08;face3d/README.md at master yfeng95/face3d GitHub&#xff09; 在配置好环境后&#xff0c;让我们一个一个py文件运行它&#xff08;我将给出中文注释&#xff09; 1&#xff09;1_pipeline.py 将一个3d头像的mat文件转换为jpg…

海外仓系统能解决海外仓哪些难题?海外仓标准化管理实用指南

海外仓管理问题常常导致业务流程变慢&#xff0c;根据我们的调查显示&#xff0c;至少有48%的海外仓每周都会出现一些“小意外”。甚至这些小问题每天都在发生&#xff0c;问题的出现已经严重影响到了海外仓业务的进行。今天我们将重点分析海外仓比较常见的一些问题&#xff0c…

springboot vue 开源 会员收银系统 (7) 收银台的完善 新增开卡 结算

前言 完整版演示 开发版演示 在前面的开发中&#xff0c;我们成功完成了商品分类和商品信息的搭建&#xff0c;开发了收银台基础。现在&#xff0c;我们将进一步完善收银台的功能&#xff0c;添加开卡和结算功能&#xff0c;并在后台实现会员卡的创建和订单保存。同时&#xff…

使用 Monkey Patch 解决 Sahi 可视化的中文乱码问题

其实如果是对算法的输出结果进行可视化的话&#xff0c;使用 Pillow 库是完全没有问题的。但是存在着这样一种情况&#xff0c;我们调用的公共包当中&#xff0c;里面已经有了可视化的接口&#xff0c;但是使用的是 OpenCV 中的 cv2.putText 进行可视化的。正常来说&#xff0c…

地瓜网络技术综合助手教你一键下载腾讯会议高清视频

当您错过腾讯会议的直播课程&#xff0c;不必担心&#xff0c;地瓜网络技术综合助手帮您轻松获取视频回放。 只需几个简单步骤&#xff0c;即可在手头保留珍贵的学习资料。 首先&#xff0c;启动地瓜网络技术综合助手&#xff0c; 进行软件初始化并开启监测功能。 接下来&…

智慧乡村和美人家信息化系统

一、简介 智慧乡村和美人家信息化系统是一个综合管理平台&#xff0c;集成了首页概览、一张图可视化、数据填报、智能评估、便捷申报、公开公示、任务管理、活动发布和灵活配置等功能。该系统不仅提升了乡村管理效率&#xff0c;也优化了家庭生活的便捷性。通过一张图&#xf…

BEVM背靠比特大陆打造新赛道,算力RWA成下一个千亿市场?

众所周知&#xff0c;在加密行业&#xff0c;每隔一段时间就会有一个新的概念或者一个新词出现&#xff0c;并引来社区和资本的追捧关注&#xff0c;笔者近期在浏览新闻时&#xff0c;发现了一个特别有意思的新概念——算力RWA&#xff0c;在社区引起了不少讨论。 该词最早出现…

工时管理系统的优势及推荐

企业发展离不开每一个员工&#xff0c;而员工的工作效率高低也是影响着企业在行业内的竞争力&#xff0c;所以规范管理员工时间&#xff0c;提升员工工作效率势在必行。工时管理系统在现代企业中的应用越来越广泛&#xff0c;不仅是因为它能显著提高企业管理效率&#xff0c;更…

Flutter【组件】按钮

简介 flutter 按钮组件。提供一种封装按钮组件的思路&#xff0c;并不支持过多的自定义属性。根据使用场景及设计规范进行封装&#xff0c;使用起来比较方便。 github地址&#xff1a;https://github.com/ThinkerJack/jac_uikit pub地址&#xff1a;https://pub.dev/package…

IOS 关于Apple Pay 与内购

一、什么是Apple Pay、什么是内购 首先这两个不是一样的&#xff0c;很多人一看觉得这两是一回事&#xff0c;我之前也是这么想的。今天我来给大家阐述一下&#xff1a; Apple Pay&#xff1a;是指支付实物类。类似国内的微信、支付宝。支付超市食品类啥的。 内购&#xff1…

el-upload组件校验不通过预览列表依然显示图片问题解决

如图校验不通过的图片依然显示在预览列表了&#xff0c;需要在校验不通过的时候移除图片 <el-uploadclass"upload-cls":action"ossSignature.host":auto-upload"false"ref"upload":list-type"listType":limit"limi…

如何在React中使用CSS模块,并解释为什么使用它们比传统CSS更有益?

在React中使用CSS模块是一种将CSS类名局部化到单个组件的方法&#xff0c;从而避免了全局作用域中的类名冲突。CSS模块允许你为组件编写样式&#xff0c;并确保这些样式只应用于该组件&#xff0c;而不会影响到其他组件。 以下是在React中使用CSS模块的步骤&#xff1a; 安装C…

通过CSS样式来禁用href

<style>.disabled-link {pointer-events: none;cursor: default;text-decoration: none;color: inherit; }</style><a href"https://www.example.com" class"disabled-link">禁用链接</a> 在上述CSS样式中&#xff0c; pointer-…

前端项目如何规范文件命名

前端项目如何规范文件命名 ls-lint 是一个非常快的文件和目录名称 linter&#xff0c;可方便约束项目目录和文件的命名。 特点&#xff1a; 快速依赖少适用所有文件配置简单 安装依赖 npm install ls-lint/ls-lint -D 在 husky 加入 git hook:"husky": {"h…

医疗器械3D全景展会在线漫游创造数字化时代的展览新篇章

在数字化浪潮的引领下&#xff0c;VR虚拟网上展会正逐渐成为企业展示品牌实力、吸引潜在客户的首选平台。我们与广交会携手走过三年多的时光&#xff0c;凭借优质的服务和丰富的经验&#xff0c;赢得了客户的广泛赞誉。 面对传统展会活动繁多、企业运营繁忙的挑战&#xff0c;许…

日语 词汇

あつい 熱い さむい 寒い ひろい 広い せまい 狭い   おおき 大き  ちいさい 小さい おおい 多い しょう  少 はやい 早い 速い  おそい 遅い わるい 悪い たかい 高い  ひくい 低い つよい 強い よわい 弱い ふかい 深い うすい 薄い あつい …

深入浅出Git原理与Gitflow流程

1 Git原理 版本控制系统在软件开发和团队协作中扮演着至关重要的角色。它们帮助开发人员跟踪和管理代码的变化&#xff0c;协调多人同时编辑同一代码库&#xff0c;回溯历史版本&#xff0c;并解决代码冲突等问题。Git作为当今最流行的分布式版本控制系统&#xff0c;为开发人…

C++ 59 之 纯虚函数和抽象类

#include <iostream> #include <string> using namespace std;class Cal { // 类中有纯虚函数&#xff0c;这个类也叫做抽象类&#xff0c;无法实现实例化 public:int m_a;int m_b;// 虚函数// virtual int getRes(){// return 0;// }// 纯虚函数 作用和虚函数…

士兰微MEMS陀螺仪在电动升降桌上的应用

杭州士兰微电子股份有限公司&#xff0c;一家在国内集成电路芯片设计与制造领域内具有领先地位的高新技术企业&#xff0c;早已以其创新的半导体微电子产品和服务&#xff0c;赢得了市场的广泛认可。士兰微不仅致力于集成电路芯片的研发&#xff0c;而且涉猎于MEMS传感器技术领…

第7章 工程项目财务评价 作业

第7章 工程项目财务评价 作业 一单选题&#xff08;共23题&#xff0c;100分&#xff09; (单选题)企业缴纳所得税后的利润,按照下列哪一个顺序进行分配?() A. ①②③④ B. ①③②④ C. ④③②① D. ②④①③ 其中:①承担被没收的财物损失,支付各项税收的滞纳金和罚款; ②提…