使用docker部署前后端

1.首先,已经默认拥有了一个拥有docker和docker compose的linux服务器。
本篇文章部署的是SpringBoot+Vue前后端分离项目,用了docker compose,但不多。
2.数据库
使用命令(表示拉取最新的MySQL)

docker pull mysql:latest

如果想指定版本,将冒号后面换成版本号即可,如:

docker pull mysql:5.7

这样就能得到一个mysql镜像。
使用以下命令查看已有的镜像。

docker images

使用以下命令创建并启动mysql容器(-d表示在后台运行,–name,定义容器名称,-p端口号,-e数据库密码,mysql:5.7镜像名称和版本号)

docker run -d --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysql_password mysql:5.7

这样就成功启动了mysql
如果有redis,部署方式与mysql相同。

3.部署后端
打包后端代码,打包前需要注意,将properties或者yml配置文件中的数据库连接属性,修改为和docker服务器相同的ip、登录密码(如果有redis,也需要修改相应的ip地址)
准备一个Dockerfile文件,这里有一份简单模板(如果是war包,将xxx.jar改为xxx.war即可)

FROM openjdk:17#jdk版本
VOLUME /home/test#当前所在目录
ADD wcjt.jar wcjt.jar #目录中的文件
EXPOSE 8082  #暴露的端口
ENTRYPOINT ["java","-jar","/wcjt.jar"] #执行的命令

将后端代码包,Dockerfile文件放入同一个文件夹中,例如/home/test
进入到/home/test路径下,执行命令(test是镜像名称,可以自定义)

docker build -t test . 

这样就准备好了一个镜像。
再执行命令:(-d表示在后台运行,–name,定义容器名称,-p端口号,test运行的镜像名称)

docker run -d --name test -p 8082:8082 test

这样后端就启动好了。
4.部署前端
使用命令(或用指定版本的方式),首先得到一个nginx镜像。

docker pull nginx:latest

准备两个配置文件,首先是docker-compose.yml
以下是简单模板

version: "3"
services: vue_test:  container_name: vue-test #容器名称,可自定义image: nginx:latest #之前下载的nginx镜像ports: - "8080:80"  #左侧为浏览器访问端口,右侧为nginx监听端口volumes:- ./dist/:/usr/share/nginx/html/ # 指定根html的文件目录- ./default.conf:/etc/nginx/conf.d/default.conf # 指定nginx的配置文件restart: always # 自动重启

另外一个配置文件是default.conf
简单模板

server {listen       80; # nginx监听端口server_name  localhost;gzip on;gzip_min_length 1k;gzip_http_version 1.0;gzip_comp_level 1;gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;gzip_disable "MSIE [1-6].";gzip_vary on;location / {root   /usr/share/nginx/html; ## 对应docker-compose文件映射的跟html文件路径try_files $uri $uri/ @router;index  index.html index.htm;error_page 405 =200 http://$host$request_uri;}location ~ /data/ {root /usr/share/nginx/html;  # Vue静态文件的根目录  }location /api/ { ##前端接口所有的/api开头的接口都会被这里代理到下方proxy_pass的地址中proxy_pass http://192.168.0.1:8082/api/;   #这里写你后端的接口地址,服务器ip+后端端口号proxy_connect_timeout 6000;     #链接超时设置proxy_read_timeout 6000;        #访问接口超时设置}location @router {rewrite ^.*$ /index.html last;}error_page   500 502 503 504  /50x.html;location = /50x.html {root  /usr/share/nginx/html;}
}

打包前端代码,压缩。
进入到/home/vue路径下(可以使用任意空路径)
将两个配置文件和前端代码上传
解压缩前端代码(这里是.zip文件后缀,其他文件类型的解压缩命令可以去百度以下,dist.zip是打好的前端包)

unzip dist.zip

使用以下命令启动即可

docker-compose up -d 

前端部署完成,使用IP+配置的端口,比如:8080访问即可。
使用下面这个命令查看正在运行的容器

docker ps

或者是这样查看所有容器,包括没有运行的

docker ps -a

使用以下命令查看容器日志(name是容器名称)

docker logs name

使用以下命令停止和删除容器

docker stop name
docker rm name

删除镜像的命令是:镜像名称或者id

docker rmi nameOrId

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

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

相关文章

64. UE5 RPG 创建新的双手攻击怪物

在上一篇文章中,我们实现了新的功能,现在可以创建多个普通攻击动画,并且可以根据你所使用的普通攻击动画,设置不同的攻击位置。比如,你使用武器,那么攻击位置需要从武器上获取,如果你没有持有武…

Python怎么安装gym:一份详尽的指南

Python怎么安装gym:一份详尽的指南 在Python的机器学习生态系统中,gym库是一个至关重要的组件,它为我们提供了用于开发和比较强化学习算法的标准环境。然而,安装gym可能并不总是那么直接,尤其是对于那些刚开始接触这个…

LangChain学习之四种Memory模式使用

1. 学习背景 在LangChain for LLM应用程序开发中课程中,学习了LangChain框架扩展应用程序开发中语言模型的用例和功能的基本技能,遂做整理为后面的应用做准备。视频地址:基于LangChain的大语言模型应用开发构建和评估。 2. 四种memory模式 …

Qt Creator创建Python界面工程并打包为可执行exe文件

Qt Creator创建Python界面工程并打包为可执行exe文件_qtcreator创建python工程-CSDN博客

【QT】Qt Plugin开发

目录 插件是什么QT插件是什么 为什么要有插件开发插件开发优势插件和动态库区别 Qt PluginQT插件类型QT插件开发流程QT插件应用QT插件JSON文件 参考文章 插件是什么 插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。…

C#中的as和is

在 C# 中,as 和 is 是用于类型转换和类型检查的操作符。 as 操作符: as 操作符用于尝试将一个对象转换为指定的引用类型或可空类型,如果转换失败,将返回 null。语法:expression as type示例: object obj &…

把文件从一台linux机器上传到另一台linux机器上

文章目录 1,第一种情况1.1 先测试2台机器是否可以互相通信1.2 对整个文件夹里面的所有内容进行传输的命令1.3 检查结果 2,第二种情况2.1,单个文件传输的命令 1,第一种情况 我这里有2台linux机器, 机器A:19…

高科技IT企业适合平滑替代FTP升级方案有哪些?

随着信息技术的飞速发展,传统的文件传输协议FTP已经逐渐不能满足现代企业的需求。特别是对于高科技IT企业来说,他们需要的不仅仅是一个简单的文件传输工具,而是一个能够提供高速、安全、稳定、易管理且兼容性强的解决方案。那么,在…

JFinal学习

JFinal 1、基于 JFinal 的 web 项目需要创建一个继承自 JFinalConfig 类的子类,该类用于对整个 web 项目进行配置。 JFinalConfig 子类需要实现六个抽象方法: 1)configConstant(Constants me) 此方法用来配置 JFinal 常量值,如开…

数学建模 —— 聚类分析(3)

目录 一、聚类分析概述 1.1 常用聚类要素的数据处理 1.1.1 总和标准化 1.1.2 标准差标准化 1.1.3 极大值标准化 1.1.4 极差的标准化 1.2 分类 1.2.1 快速聚类法(K-均值聚类) 1.2.2 系统聚类法(分层聚类法) 二、分类统计…

QPainter::end: Painter ended with 2 saved states 如何解决

QPainter::end: Painter ended with 2 saved states 是一个警告信息,它表明 QPainter 对象在结束时还存在未恢复的状态栈。这通常发生在 QPainter 对象被销毁(即调用其析构函数)时,如果存在未通过 restore() 方法平衡掉的 save() …

AutoMQ 生态集成 Tigris

Tigris[1]是一个全球分布式的兼容 S3 的对象存储服务,它允许你存储和访问任意数量的数据,具有广泛的使用场景。Tigris 会自动且智能地将数据分布到靠近用户的位置,让用户无需担心数据复制和缓存复杂性。 你可以将 Tigris 用于多种场景&#x…

EEPROM 怎么选

选择合适的EEPROM型号需要考虑多个因素,包括容量、供应商、性能参数、价格、可用性和兼容性等。以下是一个详细的步骤指南,帮助您在众多品牌和型号中做出选择: 1. 确定基本需求 首先确定您的应用对EEPROM的基本需求: 容量&…

Python里cv2是什么包?怎么安装使用?

在Python中,cv2是OpenCV库的模块名。OpenCV(全称Open Source Computer Vision Library)是一个基于开源的计算机视觉库,它提供了大量的图像处理和计算机视觉算法,如图像滤波、边缘检测、图像分割、特征提取、目标检测等…

快速排序——AcWing785.快速排序

AcWing785.快速排序 题目描述 785. 快速排序 - AcWing题库 运行代码 #include <iostream> #include <algorithm> using namespace std; const int N 1e66; int q[N]; void quick_sort(int q[], int l, int r) {if (l > r) return;int m l r >> 1;//…

LeetCode刷题之HOT100之不同路径

2024/6/6 小雨&#xff0c;没停。明天就要高考啦&#xff0c;回想五年前我也带着紧张与期待走过这些天&#xff0c;祝高考学子一切顺利。Anyway&#xff0c;早上一到实验室我就去看望我的栀子花&#xff0c;带着满怀的期待去看它长大了多少&#xff0c;是的&#xff0c;花苞还在…

《开源模型食用指南》基于Linux环境快速部署开源模型,更适合中国宝宝的部署教程

今天给大家推荐一个非常适合中国宝宝学习的专属大模型教程&#xff0c;也就是它《开源模型食用指南》&#xff01; 当前百模大战正值火热&#xff0c;开源LLM层出不穷。 如今国内外已经涌现了众多优秀开源LLM&#xff0c;国外如LLaMA、Alpaca&#xff0c;国内如ChatGLM、BaiCh…

想了解Prompt 技术?看这篇就够了!

最近看了 Meta-Prompt&#xff0c;发现 Prompt 的技术已经发展了几代了。真的要好好梳理一下了。首先是官方有 一个自己的 Prompt engineer &#xff0c; 这个是一定要认真学习的。 https://platform.openai.com/docs/guides/prompt-engineering 官方建议&#xff1a; 写作清…

使用pexpect检查SSH上的文件是否存在

使用 pexpect 模块可以在 Python 中执行命令并检查其输出。你可以使用 ssh 命令连接到远程服务器&#xff0c;并执行 ls 命令检查文件是否存在。下面我就列举几个我经常遇到的几个错误并做个详细的解决方案。 1、问题背景 用户需要编写一个 Python 脚本&#xff0c;以检查一个…

python面向过程与初始面向对象编程

让我们穿越到《龙珠》世界&#xff0c;一起揭开 面向对象编程 的神秘面纱吧。 面向过程编程与面向对象编程 天下第一武道会 选手登记 第 22 届天下第一武道会即将召开&#xff0c;各路武术高手齐聚一堂&#xff0c;其中最受瞩目的&#xff0c;当属卡卡罗特&#xff08;孙悟…