从 0 到 1 实战:Docker 部署 Spring Boot+Nginx 前后端分离应用(附完整步骤)

1.安装docker 安装nginx 安mysql安装redis

docker: 从 0 到 1:CentOS7 部署 Docker 全流程,附避坑指南 + 命令速查_centos7安装docker闭坑-优快云博客

nginx:Nginx 从入门到实践:概述、命令与核心应用_nginx 描述-优快云博客

mysql: 见以下

2.环境部署

后端

JDK >= 1.8 
Mysql >= 5.7.0 
Redis >= 3.0
Maven >= 3.0
Node >= 12

导入idea 启动起来 更改为服务器地址

或者nacos上配置地址 或者更改本地地址测试 更改完毕以后

在target中找到jar包 并且把包复制到连接服务器工具上去

3.构建 Docker 镜像

构建Dockerfile

FROM openjdk:8-jdk-alpine
​
​
MAINTAINER linxianfeng
​
​
COPY  xxx自己的jar包.jar /app.jar
​
​
EXPOSE 8888
​
ENTRYPOINT ["java", "-jar", "/app.jar"]

4. 构建 Docker 镜像

在终端中进入项目根目录(确保 Dockerfiletarget 文件夹在此目录),执行以下命令构建镜像:

# 注意末尾的点(.)表示当前目录为构建上下文
docker build -t docker-test1:v1 .
  • -t docker-test1:v1:为镜像命名(docker-test1)并添加标签(v1),方便后续引用。

  • 构建成功后,可用 docker images 命令查看镜像是否存在。

5. 运行 Docker 容器

使用以下命令启动容器:

# 简单启动(前台运行,可看到日志)
docker run -p 8080:8080 docker-test1:v1    不建议 而且不需要用到
​
# 后台启动(推荐)
docker run -d -p 9091:9091 --name my-docker-test1 docker-test1:v1

参数说明:

  • -d:后台运行容器。

  • -p 8080:8080:将容器的 8080 端口映射到宿主机的 8080 端口(格式:宿主机端口:容器端口)。

  • --name my-docker-test1:给容器指定一个名称,方便管理。

6. 验证启动状态

  • 查看正在运行的容器:

    docker ps
  • 查看容器日志(替换

    docker logs -f my-docker-test1
  • 访问应用:在浏览器或终端中访问 http://宿主机IP:8080(如果是本地机器,可用 http://localhost:8080)。

7. 停止 / 重启容器

  • 停止容器:

    docker stop my-docker-test1
  • 重启容器:

    docker restart my-docker-test1

8.构建前端资源

# 安装依赖
npm install
​
npm install --registry=https://registry.npmmirror.com
​
# 本地开发 启动项目
npm run dev
​
​
# 打包正式环境
npm run build:prod

构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js***.cssindex.html 等静态文件 直接把代码复制到nginx的html中去

9.修改nginx的配置文件

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  192.168.65.130;
        charset utf-8;
​
        location / {
            root   /usr/local/nginx/html/dist;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
        
        location /prod-api/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://192.168.65.130:8888/;
        }
​
        # springdoc proxy
        location ~ ^/v3/api-docs/(.*) {
            proxy_pass http://localhost:8080/v3/api-docs/$1;
        }
​
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

重新加载配置文件 ./nginx -s reload 然后去 /sbin目录去启动 ./nginx

10.安装MySQL

1.4.1 MySQL安装

对于MySQL数据库的安装,我们将要使用前面讲解的第二种安装方式rpm进行安装。那么首先我们先了解一下什么rpm?

RPM:全称为 Red-Hat Package Manager,RPM软件包管理器,是红帽Linux用于管理和安装软件的工具。

我们要通过rpm,进行MySQL数据库的安装,主要的步骤如下:

1). 检测当前系统是否安装过MySQL相关数据库

需要通过rpm相关指令,来查询当前系统中是否存在已安装的mysql软件包,执行指令如下:

rpm -qa                         查询当前系统中安装的所有软件
rpm -qa | grep mysql            查询当前系统中安装的名称带mysql的软件
rpm -qa | grep mariadb          查询当前系统中安装的名称带mariadb的软件

通过rpm -qa 查询到系统通过rpm安装的所有软件,太多了,不方便查看,所以我们可以通过管道符 | 配合着grep进行过滤查询。

通过查询,我们发现在当前系统中存在mariadb数据库,是CentOS7中自带的,而这个数据库和MySQL数据库是冲突的,所以要想保证MySQL成功安装,需要卸载mariadb数据库。

2). 卸载现有的MySQL数据库

在rpm中,卸载软件的语法为:

rpm -e --nodeps  软件名称

那么,我们就可以通过指令,卸载 mariadb,具体指令为:

rpm -e --nodeps  mariadb-libs-5.5.60-1.el7_5.x86_64

我们看到执行完毕之后, 再次查询 mariadb,就查不到了,因为已经被成功卸载了。

3). 将资料中提供的MySQL安装包上传到Linux并解压

A. 上传MySQL安装包

B. 解压到/usr/local/mysql

执行如下指令:

mkdir /usr/local/mysql
tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql

4). 安装顺序安装rpm安装包

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
yum install net-tools
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

说明:

  • 因为rpm安装方式,是不会自动处理依赖关系的,需要我们自己处理,所以对于上面的rpm包的安装顺序不能随意修改。

  • 安装过程中提示缺少net-tools依赖,使用yum安装(yum是一种在线安装方式,需要保证联网)

  • 可以通过指令(yum update)升级现有软件及系统内核

1.4.2 MySQL启动

MySQL安装完成之后,会自动注册为系统的服务,服务名为mysqld。那么,我们就可以通过systemctl指令来查看mysql的状态、启动mysql、停止mysql。

systemctl status mysqld     查看mysql服务状态
systemctl start mysqld      启动mysql服务
systemctl stop mysqld       停止mysql服务

说明:

可以设置开机时启动mysql服务,避免每次开机启动mysql。执行如下指令:

systemctl enable mysqld

我们可以通过如下两种方式,来判定mysql是否启动:

netstat -tunlp                  查看已经启动的服务
netstat -tunlp | grep mysql     查看mysql的服务信息
​
ps –ef | grep mysql             查看mysql进程

备注: 

A. netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

参数说明:

-l或--listening:显示监控中的服务器的Socket; ​ -n或--numeric:直接使用ip地址,而不通过域名服务器; ​ -p或--programs:显示正在使用Socket的程序识别码和程序名称; ​ -t或--tcp:显示TCP传输协议的连线状况; ​ -u或--udp:显示UDP传输协议的连线状况;

B. ps命令用于查看Linux中的进程数据。

1.4.3 MySQL登录
1.4.3.1 查阅临时密码

MySQL启动起来之后,我们就可以测试一下登录操作,但是我们要想登录MySQL,需要一个访问密码,而刚才在安装MySQL的过程中,并没有看到让我们设置访问密码,那这个访问密码是多少呢? 那实际上,对于rpm安装的mysql,在mysql第一次启动时,会自动帮我们生成root用户的访问密码,并且输出在mysql的日志文件 /var/log/mysqld.log中,我们可以查看这份日志文件,从而获取到访问密码。

可以执行如下指令:

1). cat /var/log/mysqld.log

这种方式,可以看到所有的日志数据,文件比较大时,很不方便查看数据。我们可以通过管道符 | 配合grep来对数据进行过滤。

2). cat /var/log/mysqld.log | grep password

我们可以通过上述指令,查询日志文件内容中包含password的行信息。

1.4.3.2 登录MySQL

获取到root用户的临时密码之后,我们就可以登录mysql数据库,修改root的密码,为root设置一个新的密码。并且我们还需要开启root用户远程访问该数据库的权限,这样的话,我们就可以在windows上来访问这台MySQL数据库。

执行如下指令:

①. 登录mysql(复制日志中的临时密码登录)
    mysql -uroot -p                             
​
②. 修改密码
    set global validate_password_length=4;          设置密码长度最低位数
    set global validate_password_policy=LOW;        设置密码安全等级低,便于密码可以修改成root
    set password = password('root');                设置密码为root
    
③. 开启访问权限
    grant all on *.* to 'root'@'%' identified by 'root';
    flush privileges;

操作完上述的指令之后,数据库root用户的密码以及远程访问我们就配置好了,接下来,可以执行exit退出mysql,再次通过新的密码进行登录。

当然我们也可以使用安装在windows系统中的sqlyog或者Navicat来远程连接linux上的MySQL。

注意: 要想在windows上能够访问MySQL,还需要开放防火墙的3306端口,执行如下指令:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

11:一些杂七杂八的

有时候网慢 换源

vi /etc/docker/daemon.json

{
  "registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://registry.docker-cn.com"
],
 "insecure-registries" : [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
    ],
"debug": true,
"experimental": false
}

# 启动并设置自启
systemctl start docker
systemctl enable docker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是一只羊.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值