jar打包,Idea中docker部署。nginx前端容器,后端接口路由

一、项目打可执行jar包
pom继承spring-boot-starter-parent

项目maven生命周期package打包,如果报错There are test failures
在pom文件properties中添加 <maven.test.skip>true</maven.test.skip>跳过测试


二、Linux服务器上安装docker(两个配置文件包里面都有,可以直接xftp复制)
首先配置一下Docker的阿里yum源
vi /etc/yum.repos.d/docker.repo
(点击I插入文本,输入完毕Esc :wq) 
内容
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg   

------------------------分割线------------------------------

yum -y install docker-ce

配置 docker 的镜像源
mkdir /etc/docker
vi /etc/docker/daemon.json

内容
{
   "registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"]
}

------------------------分割线------------------------------

systemctl start docker

设置开机自启动
systemctl enable docker


三、配置连接远程服务上的 docker 环境
vi /usr/lib/systemd/system/docker.service
在ExecStart选项后面添加-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

使配置生效
systemctl daemon-reload
 
systemctl restart docker

防火墙开放 2375 端口(其他你需要开放的端口同下,改下端口号)
firewall-cmd --permanent --zone=public --add-port=2375/tcp 
项目端口
firewall-cmd --permanent --zone=public --add-port=9001/tcp 
firewall-cmd --reload

外部浏览器访问 http://ip:2375/version
如果访问成功则表示配置成功


四、项目远程部署
最新版本的 `idea` 默认已经安装了 `docker` 客户端插件
idea点击服务,点击最右边的加好按钮,选择Docker连接,名称随意,
选择TCP套接字,引擎 API URL填http://ip:2375 
下面会显示连接成功,点击确定

在项目中创建一个Dockerfile文件(我这里也提供了一个demo)

内容
#配置jdk基础镜像
FROM xccszu/openjdk1.8
#声明作者
LABEL authors="sophon"
#配置镜像信息
MAINTAINER 745729377@qq.com

#将target目录下的可执行jar复制到容器中
COPY target/pet-0.0.1-SNAPSHOT.jar /usr/local/server/pet/pet-1.0.jar
COPY target/classes/apiclient_key.pem /usr/local/server/pet

#启动容器时执行的命令 -c 清除之前的数据
ENTRYPOINT ["java","-jar","/usr/local/server/pet/pet-1.0.jar","-c"]

------------------------分割线------------------------------

点击这个文件的绿色双箭头,可以选择构建镜像,就是把我们的项目打包成默认镜像。
运行,就是制作成镜像后,直接运行,生成容器。

这里我选择新建运行配置
名称改成你的项目名例如pet,镜像标记就是项目名加版本号例如pet:1.0
容器名称就是镜像运行后的容器名称例如pet。
点击修改,点击绑定端口,填写主机端口和容器端口,这两个端口都和你项目的端口一致,点击确定。
点击修改,点击运行选项,填写--restart=always,使docker重启时,容器也能自启动。
点击修改,点击绑定挂载,填写/usr/local/server/pet:/usr/local/server/pet/log
这样我们就能在宿主机上查看日志。
点击应用,点击运行,项目会自动启动。

这时候访问我们的项目的接口,就能访问到了。

五、其他容器
比如redis,mysql,rabbitmq,nginx都可以使用容器来部署

(1)例如前端容器nginx
# 启动一个没有挂载的nginx
docker run -d -p 80:80 --name nginx-test nginx:latest

mkdir /usr/local/server/nginx
# 使用cp拷贝文件到目标文件夹下
docker cp nginx-test:/etc/nginx/ /usr/local/server/nginx/conf

# 之后就可以删除该容器了
docker stop nginx-test
docker rm nginx-test

docker run -d --name nginx --restart=always -p 80:80 \
-v /usr/local/server/nginx/html:/usr/share/nginx/html \
-v /usr/local/server/nginx/logs:/var/log/nginx \
-v /usr/local/server/nginx/conf:/etc/nginx \
nginx:latest

把vue打包后的dist下所有文件通过xftp复制到/usr/local/server/nginx/html目录下
访问服务器ip地址就能访问到我们首页了。

在默认conf.d下默认配置文件中添加配置
location /api {
        rewrite ^/api(.*)$ $1 break;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://csktedu;
}

相当于vue.config.js中的开发服务器对api的重写
const newVar = {
  target: 'http://ip:9001',
  ws: true,
  changeOrigin: true,
  pathRewrite: {'^/api': ''}
};

devServer: {
    port: 80,
    allowedHosts: [
      "www.csktedu.com"
    ],
    proxy: {
      '/api': newVar
    }
}

在server代码块上面添加(ip不能是localhost或者127.0.0.1)
upstream csktedu{
   server ip:9001;
}
帮我们把nginx前端axios的访问路由到后端

重启下nginx
docker restart nginx

项目中的请求就能转发到我们的后端服务器了

(2)mysql数据库容器部署
在idea的Docker服务中的点击镜像,填写要拉取的镜像mysql:5.7

拉取完镜像,在mysql:5.7上点击创建容器,进行配置

名称mysql,容器名称mysql,绑定端口3306:3306

绑定挂载/usr/local/server/mysql/log:/var/log/mysql  /usr/local/server/mysql/data:/var/lib/mysql  /usr/local/server/mysql/conf:/etc/mysql

环境变量MYSQL_ROOT_PASSWORD=123456

运行选项-d

确定运行

通过xftp将sql脚本导入我们的/usr/local/server/shareroom目录

使用docker命令将sql脚本复制到容器中的/tmp目录下
docker cp /usr/local/server/shareroom/shared_room.sql mysql:/tmp/shared_room.sql

进入容器执行脚本
docker exec -it mysql mysql -uroot -p123456

因为sql脚本没有创库,创建我们的数据,要对应后端项目中的数据库
create database shared_room;

use shared_room

SOURCE /tmp/shared_room.sql;

show tables;  查看表是不是都进来了

依赖mysql的项目,先部署mysql
 


 

  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值