【Docker】-- 使用docker部署Springboot+vue项目到虚拟机

本文介绍了在CentOS7环境下使用Docker部署MySQL数据库,自定义网络,以及部署Java项目和前端应用的过程,包括使用MobaXterm连接,端口映射,网络配置和Nginx的代理设置。
摘要由CSDN通过智能技术生成

虚拟机系统:CentOS 7

连接虚拟机工具:MobaXterm

以下在安装好虚拟机和docker基础上操作。

安装docker:【Docker】-- 如何安装docker-CSDN博客


一、部署Mysql

1、安装mysql

docker中执行:

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql

效果如图:

解读:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

  • --name mysql : 给容器起个名字叫mysql,可以叫别的

  • -p 3306:3306 : 设置端口映射。

    • 容器是隔离环境,外界不可访问。但是可以宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。

    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。

    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口

  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定

    • TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号

    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

2、数据库建表

使用SQLyog或者MySQLworkbench连接上虚拟机中的mysql,并建表。

二、自定义网络

1.首先通过命令创建一个网络

docker network create hmall

 2.查看网络

docker network ls

3.让mysql加入该网络

        注意,在加入网络时可以通过--alias给容器起别名 ,这样该网络内的其它容器可以用别名互相访问!

mysql容器,指定别名为db

docker network connect hmall mysql --alias db

三、部署java项目

1、打包项目

修改项目的application.yml文件,修改数据库连接配置为你的docker数据库名称和密码。

然后打包项目,编辑一个名为Dockerfile的文件,内容如下(注意修改):

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY 你的名称.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

然后将这两个文件上传到虚拟机的root目录下

2、部署项目

构建项目镜像

不指定tag,则默认为latest

docker build -t hmall .

查看镜像

docker images

创建并运行容器

并通过--network将其加入hmall网络,这样才能通过容器名访问mysql

docker run -d --name hmall -p 8080:8080 --network hmall hmall

以下信息表示有重名容器

输入以下删除后,再执行上述指令

docker rm -f hmall

最后,可以通过浏览器访问:http://你的虚拟机地址:8080/

四、部署前端

1、准备html

先准备一个nginx文件

包含:

html文件夹包含:两个不同的前端页面,一个是管理端页面,一个是用户页面

hmall-admin:

nginx.conf:需要对两个页面做代理


worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/json;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       18080;
        # 指定前端项目所在的位置
        location / {
            root /usr/share/nginx/html/hmall-portal;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /api {
            rewrite /api/(.*)  /$1 break;
            proxy_pass http://hmall:8080;
        }
    }
    server {
        listen       18081;
        # 指定前端项目所在的位置
        location / {
            root /usr/share/nginx/html/hmall-admin;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /api {
            rewrite /api/(.*)  /$1 break;
            proxy_pass http://hmall:8080;
        }
    }
}

2、上传nginx到虚拟机

3、创建运行容器

docker run -d \
  --name nginx \
  -p 18080:18080 \
  -p 18081:18081 \
  -v /root/nginx/html:/usr/share/nginx/html \
  -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
  --network hmall \
  nginx

4、测试

输入:虚拟机ip:页面端口号

如:我的ip:192.168.37.129,页面端口号:18080


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四月天行健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值