手把手教你用Docke+Docker-Compose部署SpringBoot+Vue+Mysql项目

前言

最近写完了一个SpringBoot+Vue的项目,企业进销存系统,想用docker部署到服务器上去,找了很多文章都没找到合适的,折腾了两天终于部署上去了,所以把这个过程记录下来,方便小伙伴们参考
服务器:华为云
开放常用端口:比如mysql的3306,后端的8080等等
这个在你的服务器网页控制台的安全组里面可以更改
现在的服务器都有一键开放常用端口的

工具:Final Shell 连接服务器
下载链接:http://www.hostbuf.com/downloads/finalshell_install.exe

Navicat:连接数据库
链接:https://pan.baidu.com/s/1UZyRCedMp-SSiKlI7zROHg?pwd=6666
提取码:6666

后端配置

在对后端项目进行打包前,我们必须要做一些更改
我们平时开发一个简单的项目就一个yml配置文件,application.yml文件
但是这是我们得到开发文件,我们在服务器上不能使用这个文件
所以我们再新建一个application-pro.yml作为我们的配置文件
那怎么让项目指定使用这个application-pro.yml作为我们的配置文件呢
所以我们新建一个application.properties来帮助我们指定配置文件
在这里插入图片描述
在这里插入图片描述
下面是application-pro.yml

server:
  port: 8080

# 数据库配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root# 服务器用户名
    password: 你的服务器mysql密码# 服务器mysql密码
    url: jdbc:mysql://mysql:3306/psi_manager?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB

# 配置mybatis实体和xml映射
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.entity
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true

# 分页
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

ip: 60.204.154.92

在这里插入图片描述
这里指的是你的docker里面的mysql容器名称,这里指定mysql,后面在docker-compose.yml文件里面会指定的

后端打包

在这里插入图片描述
先clean,再package,就得到了jar包
在这里插入图片描述
后端的配置和打包就结束了,我们去前端

前端配置

在这里插入图片描述
我们现在是部署到服务器上了,那肯定不能还是生产环境下的配置了,和后端配置一样,我们得再新建一个服务器配置文件,然后指向服务器配置文件,如下
在这里插入图片描述

前端打包

在这里插入图片描述
打包之后我们会得到一个dist文件夹
在这里插入图片描述
到这里前端的打包也完成了

准备docker配置文件

光打包前后端还不够,我们要准备docker配置文件,在springboot目录下新建
在这里插入图片描述
dockerfile如下

#依赖jdk8环境
FROM openjdk:8

#对外暴露8085
EXPOSE 8080
#复制server-1.0-SNAPSHOT到docker容器中并命名为app.jar
ADD springboot-0.0.1-SNAPSHOT.jar app.jar
#执行命令
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]

在这里插入图片描述
docker-compose.yml

version: "3"
services:
  nginx:
    image: nginx:latest
    ports:
      - 80:80
    volumes:
      - /root/nginx/html:/usr/share/nginx/html
      - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true
  mysql:
    image: mysql:8
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
  springboot:
    image: springboot:latest
    build: .
    ports:
      - 8080:8080
    volumes:
      - /usr/photo:/usr/photo
    depends_on:
      - mysql
#volumes:
#  psi:

在这里插入图片描述

准备文件一览

在这里插入图片描述
dist是前端打包文件
files是我的图片文件夹,你们不用理会
docker-compose.yml是docker配置文件
dockerfile是docker配置 文件
psi_manager.sql是数据库脚本
最后一个是后端打包文件

在服务器上安装docker和dockercompose

安装docker

使用Final Shell 连接服务器
在这里插入图片描述
安装一些软件包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加docker官方仓库

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker引擎

sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

systemctl start docker

设置为开机启动

systemctl enable docker

验证安装

docker --version

安装成功
在这里插入图片描述

安装docker-compose

从github上拉取

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

添加权限

sudo chmod +x /usr/local/bin/docker-compose

验证安装

docker-compose --version

我由于网络原因安装失败,所以我是手动安装的
手动第一步:清理

sudo rm /usr/local/bin/docker-compose
rm -rf ~/.docker/compose

运行以下命令确保 Docker Compose 已被成功删除
docker-compose --version

手动第二步:从github上手动下载文件
https://github.com/docker/compose/releases
选择在这里插入图片描述
手动第三步:
传输到云服务器上的
/usr/local/bin/docker-compose
记得修改文件名为docker-compose
手动第四步:

然后设置执行权限
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

把准备文件放到服务器对应位置上

在服务器的/root文件夹下面新建一个文件夹,然后把你的准备文件放上去
在这里插入图片描述
后端的文件我们就放完了,接着放前端的文件
在服务器的/root下新建一个nginx,在nginx下新建html和nginx.conf
在这里插入图片描述
把我们的前端打包文件dist下的所有文件都放到这里面
在这里插入图片描述
nginx.conf也别忘了,接下里书写里面的配置内容
在这里插入图片描述
nginx.conf

#user  root;
worker_processes  1;

events {
  worker_connections  1024;
}

http {
  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;
  keepalive_timeout  65;

    server {
        listen   80; # 监听的端口 
        server_name  60.204.154.92; # 处理的host地址 (请替换成你对应的项目访问 ip 或 域名)!!!
        root    /usr/share/nginx/html; # vue项目存在的目录(替换成你对应的地址,如果你这是用docker部署的请改成你容器内的地址)
        location / {
            try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
            index  index.html index.htm;
        }
        #对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
        #因此需要rewrite到index.html中,然后交给路由在处理请求资源
        location @router {
            rewrite ^.*$ /index.html last;
        }
   }

}

在这里插入图片描述

最后运行docker-compose文件

我们回到这里来
在这里插入图片描述
在这里插入图片描述
使用上面的cd命令可以回到你的docker-compose文件所在路径
输入:

docker-compose up -d

然后静静地等待一会
在这里插入图片描述
到这里我们的工作基本都完成了,但是别忘了导入数据库脚本哦!

导入数据库

打开Navicat,连接上我们服务器
在这里插入图片描述

然后新建你自己的数据库,右键运行sql文件即可

欣赏自己的成果

打开浏览器,输入自己的服务器ip
http://60.204.154.92/
在这里插入图片描述
在这里插入图片描述
完美撒花~

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 准备工作 在服务器上安装dockerdocker-compose,具体安装方法可以参考官方文档。 2. 创建项目文件夹 在服务器上创建一个用于存放vue项目的文件夹,例如:`/home/vue-project/`。 3. 编写docker-compose文件 在项目文件夹中创建一个名为`docker-compose.yml`的文件,并编写以下内容: ``` version: '3' services: web: image: node:latest ports: - "8080:8080" volumes: - ./app:/app working_dir: /app command: "npm run dev" ``` 这个docker-compose文件定义了一个名为`web`的服务,使用最新版本的Node.js镜像,将本地的`./app`目录挂载到容器的`/app`目录,将容器的8080端口映射到主机的8080端口,最后在容器中执行`npm run dev`命令。 4. 编写Dockerfile文件 在项目文件夹中创建一个名为`Dockerfile`的文件,并编写以下内容: ``` FROM node:latest RUN mkdir /app WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "npm", "run", "dev" ] ``` 这个Dockerfile定义了一个基于Node.js镜像的Docker镜像,将容器的工作目录设置为`/app`,将本地的`package*.json`文件复制到容器中并执行`npm install`命令安装依赖,将本地的所有文件复制到容器中,将容器的8080端口暴露出来,最后在容器中执行`npm run dev`命令。 5. 构建镜像 在项目文件夹中运行以下命令构建镜像: ``` docker build -t vue-project . ``` 6. 启动容器 在项目文件夹中运行以下命令启动容器: ``` docker-compose up -d ``` 7. 访问应用 在浏览器中访问服务器的IP地址和端口号,例如:`http://<server_ip>:8080`,即可访问应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值