docker离线环境下部署vue和springboot项目

用堡垒机以客户端的方式连接服务器,会唤起xshell(需要提前安装xshell和xftp 家庭版即可免费)。

要上传文件的话从xshell中再点击xftp按钮,打开xftp工具以sftp协议传输文件即可。

su root #连接上服务器 并切换root用户

服务器上全部都是docker部署的数据库。

maraidb bind映射 "/home/apps/mariadb/data:/var/lib/mysql"

1.mysql数据导入:

将sql文件拷贝过去:mv blast_vue.sql /home/apps/mariadb/data

#docker部署的mariadb, 进入容器中。里面没有mysql命令,用mariadb代替

docker exec -it mariadb bash 
mariadb -u root -p  
create database blast_vue;
use blast_vue;
source /var/lib/mysql/blast_vue.sql;
show tables;
select user, host from user;
GRANT ALL PRIVILEGES ON blast_vue.* TO 'sa'@'%'; #授予sa用户blast_vue数据库权限
FLUSH PRIVILEGES;

2.springboot打成镜像

springboot打成jar包后,在jar包目录下创建文件`Dockerfile`:

FROM java:8
ADD ruoyi-admin.jar app.jar 
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "/app.jar" ]

然后执行命令构建镜像(默认找Dockerfile):

docker build -t blast:v1.0 .

docker save -o blast.tar blast #导出镜像

docker load -i blast.tar #在服务器上导入

启动springboot容器

docker run -itd -p 9151:8080 --restart=always -v /home/apps/blast/project:/home/ruoyi --name=blast_java blast:v1.0 tail -f /dev/null

也可以不用-v,直接在Dockerfile中配置一个匿名卷:VOLUME ["/home/ruoyi"]  

3.拉取nginx并打包镜像

docker load -i nginx.tar

docker load -i nginx.tar #在服务器上导入

启动nginx 容器

# 使用host网络模式,方便部署多个前端项目。只需增加新conf配置,并重启docker即可.
# 删除默认站点配置文件或修改里面的listen监听,避免80端口被占用:可能在/etc/nginx/sites-enabled/default 或 /etc/nginx/conf.d/default.conf里
docker run -itd --name=nginx --net=host --restart=always -v /home/apps/nginx/conf.d:/etc/nginx/conf.d -v /home/apps/nginx/data:/data nginx nginx -g "daemon off;"

vim /home/apps/nginx/conf.d/blast.conf #配置nginx监听

server{
        listen 82;
        server_name localhost;
        index index.html;
        root  /data/dist;
        location / {
          try_files $uri $uri/ @router;
          index  index.html;
        }
        location @router {
          rewrite ^.*$ /index.html last;
        }
        location /prod-api/ { #后端接口转发
                proxy_pass http://10.100.2.74:9151;   #后端接口地址
                proxy_cookie_path / /prod-api;
                rewrite ^/prod-api/(.*) /$1 break;
                client_max_body_size 500m;
        }
     }

前端项目打包后移动到-v映射的目录中,然后重启下nginx容器即可:

mv dist /home/apps/nginx/data 

docker container restart nginx

测试能否正常访问:

curl localhost:9152

curl localhost:9152/prod-api/

额外:sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

FTP使用TCP端口21上的控制连接建立连接。而,SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李庆政370

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

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

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

打赏作者

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

抵扣说明:

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

余额充值