首页 > 系统相关 >linux上如何使用docker部署前后端分离项目(含部署多个前端页面的方法)

linux上如何使用docker部署前后端分离项目(含部署多个前端页面的方法)

时间:2023-09-27 17:38:18浏览次数:45  
标签:部署 linux jar nginx 服务器 mysql 镜像 docker

(目录)

前言

使用前一段时间写的前后端分离开发的简单小项目,确保本地可以启动 在这里插入图片描述

部署所需镜像汇总

  1. mysql镜像 2. 后端工程自定义镜像 3. nginx镜像

<font color=red>下面介绍部署过程</font>

一、mysql镜像

(1)拉取mysql镜像

选择使用的mysql版本,我用的是8.0.33

docker pull mysql:8.0.33

在这里插入图片描述

(2)查看镜像

docker images

在这里插入图片描述

(3)创建mysql容器

docker run  --name mysql  -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306  -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf  -v /tmp/mysql/data:/var/lib/mysql  -d  mysql:8.0.33
  • 密码是123456
  • 端口是 3306

(4)使用本地的datagrip或者其他工具连接MySQL

记得开放3306端口,不会开放端口,可以查看我的这篇文章 华为云服务器如何开放端口(有详细图文教程)

输入云服务器的IP地址,mysql的用户和密码 在这里插入图片描述

(5)导入sql文件

在这里插入图片描述

二、后端部署

(1)创建工作目录

在云服务器的 /home 下创建 spark 目录(任意名称都可以),作为工作目录: 在这里插入图片描述

(2)修改配置文件

修改 application 配置文件中 MySQL 数据库地址为云服务器地址:

在这里插入图片描述

(3)本地后端项目打包

在这里插入图片描述 得到jar包

在这里插入图片描述

(4)编写 Dockerfile 文件

FROM java:8
VOLUME /tmp
ADD *.jar /app.jar
EXPOSE 8080

RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

(5)上传jar包和Dockerfile

将本地打好的jar包和Dockerfile文件上传至云服务器的 /home/spark 目录下: 在这里插入图片描述

(6)创建镜像

使用编写的 Dockerfile 创建后台项目的镜像:

docker build -t spark .

将spark改为你的项目名,最后还有一个点,千万别忘了

在这里插入图片描述 查看构建好的镜像

在这里插入图片描述

(7)使用构建好的镜像启动容器

创建自定义后端项目的容器:docker run -d -p 8080:8080 --name spark spark

在这里插入图片描述

(8)网页访问测试

记得开放相应的端口,不会开放端口,可以查看我的这篇文章 华为云服务器如何开放端口(有详细图文教程)

在这里插入图片描述 可以看到后端工程启动成功。

三、nginx部署

这里我使用了nginx一键部署,详情请看 如何在linux系统中运行.sh文件(shell脚本),以一键部署nginx为例子

简单来讲就是运行别人编写的脚本在linux上一键部署nginx,更方便,传统的方法我觉得很麻烦,咱程序员嘛,就得怎么方便怎么来 在这里插入图片描述 最后的效果 在这里插入图片描述

四、前端部署

(1)修改配置文件

修改前端工程 vue.config.js 文件,target修改为 云服务器 地址 在这里插入图片描述

(2)前台工程打包

# 构建生产环境
npm run build:prod

打好包之后前端工程目录下会出现一个dist文件夹:

在这里插入图片描述

(3)上传dist包

将dist包上传至云服务器宿主机 /usr/local/nginx/html 目录下: 在这里插入图片描述 这里的dist为前台的前端页面,build为后台的前端页面,后面会讲如何用nginx部署多个前端页面

(4)编辑nginx配置文件

步骤一、修改 /usr/local/nginx/conf 目录下的 nginx.conf文件:

  • 找到server下的server_name,后边改为云服务器的ip
  • 在location / 下的root中,以html文件夹开始,将路径改为下方index里index.html文件所在的文件夹里

在这里插入图片描述

注:如果你也需要部署多个前端页面,则需要

  • 在server里再写个location,将后边的 / 路径改为 /backstage (这里改为你想用的路径)
  • 将原先 root 位置的 root 改为alias (只能存在一个root,其余的都只能写成alias)

步骤二、重启nginx容器

需要重启nginx容器之后,修改的配置文件内容才会同步过去。

  • 在使用一键部署nginx的情况下,需要先转到 /usr/local/nginx/sbin 目录下,再执行下面的命令
./nginx -s reload

在这里插入图片描述

(5)访问测试

前台 在这里插入图片描述 后台 在这里插入图片描述 可以看到前后端已经连通了,已经有数据了,这样不仅你可以在本地访问,也可以在别的电脑上访问,后续你也可以在云服务器上绑个域名

在这里插入图片描述 完毕!

标签:部署,linux,jar,nginx,服务器,mysql,镜像,docker
From: https://blog.51cto.com/u_16277539/7626838

相关文章

  • spark环境部署之wordCount初体验
    一.安装spark1.1下载并解压官方下载地址:http://spark.apache.org/downloads.html,选择Spark版本和对应的Hadoop版本后再下载:解压安装包#tar-zxvfspark-2.2.3-bin-hadoop2.6.tgz1.2配置环境变量vim/etc/profileexportSPARK_HOME=/usr/app/spark-2.2.3-bin-......
  • 部署文件
    一、把所要替换的jar包上传(若有重复,删除后再上传);二、进入对应的文件的sftp和资源ip部署服务器(SFTP也称SSH文件传输协议,一种数据流连线档案存取、传输和管理功能的网络传输协议);三、到对应部署服务器中进入到相应的目录下,备份(重命名)已有的jar包后,把新jar包传上去;四、传送完毕,进入......
  • Docker|--E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of the
    错误apt-keyadv--keyserverkeyserver.ubuntu.com--recv-keys871920D1991BC93CE:gnupg,gnupg2andgnupg1donotseemtobeinstalled,butoneofthemisrequiredforthisoperation解决方案apt-getupdate&&apt-getinstall-ygnupg2#或者apt-getu......
  • 10 分钟学会Linux常用 bash命令
    目录1.基本操作1.1.文件操作1.2.文本操作1.3.目录操作1.4.SSH,系统信息&网络操作2.基本Shell编程2.1.变量2.2.字符串替换2.3.函数2.4.条件2.5.循环3.技巧4.调试1.BasicOperationsa.export显示所有的环境变量,如果你想获取某个变量的详细信息,使用echo......
  • 怎么修改linux的root@后面的名称
    场景.登录服务器,root后面的名称是随机的,想自定义名称建议,直接使用命令执行hostnamectlset-hostnamerdd-test重新连接即可生效,实际也是修改了/etc/hostname名称需要重启机子输入命令:vim/etc/hostname进入文件,修改并保存;只有重启之后,更改的主机名才可以生效。......
  • linux中backport printk和front printk的区别
    在Linux内核中,"backportprintk"和"frontprintk"都是用于记录内核消息和调试信息的机制,但它们的工作方式和使用场景有一些区别。"backportprintk"是一种在内核中记录消息和调试信息的机制,可以将这些信息输出到控制台、串口、网络等目标。它通常用于在内核启动过程中的早期阶段,......
  • Linux0.11代码浅析
    Linux0.11"pulloneselfupbyone'sbootstraps"......
  • Linux Bash 提示符的一些骚操作
    如何设置Bash提示符Bash提示符是通过环境变量PS1(提示符字符串1PromptString1)来设置的,它用于交互式shell提示符。当然如果你需要更多的输入才能完成一个Bash命令时,PS2环境变量就是用来设置多行提示符的:[dneary@dhcp-41-137~]$exportPS1="[LinuxRulez]$"[Lin......
  • 50、linux修改虚拟机的时间
    1、查看当前时区与电脑端实际时间不一致 2、修改时区 再次查看发现时间已同步时区 ......
  • Linux2.1.13网络源代码学习(https://qiankunli.github.io/2022/07/04/linux_2_1_13_ne
    简介简介源码目录网络分层数据结构套接字套接字与vfssk_buff结构网络协议栈实现——数据struct和协议structlinux1.2.13接收数据收到数据包的几种情况Socket读取发送数据面向过程/对象/ioc以下来自linux1.2.13源码,算是参见Linux1.0的学习笔记。源码目......