博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

idea 离线发布项目到linux

Posted on 2022-02-09 15:11  菠萝  阅读(127)  评论(0编辑  收藏  举报

h一直做.NET项目,最近碰巧有个项目用java写的webapi需要发布到linux的docker中。由于第一次接触所以记录下

环境:目标服务器是是离线无外网访问的redhat,已经安装了docker

实现思路:本地开发,江项目在线发布到有外网访问的 中间服务器的docker中,然后将此docker 导出后 copy到最终服务器 (docker save   \ docker load)

 

插曲:之所以我要来研究这个发布,小组java工程师每次发布项目都是一个整体的java包 (六七百M),这样在离线环境联调更新一次程序要废很长时间。虽然有告知每次发布更新值覆盖修改的模块文件就行了,但java工程师告知:这个实现不了!

 

第一步:项目上次不在是一个jar包

1.1、在项目右键--Open Module Setting

 


 

 

1.2 选择“手动挡”--Artifacts ,然后点击 “加号”新增

 

 

 

 1.3 选择 JAR --From modules with Dependecies...

 

 

 1.4 选择对应的Module,然后点击 Main Calss 后的 文件图标(用于自动加载入口函数)

    

 

重点来了:

1.5 JAR Files From libraries  选择 第二个,(如果选择第一个 就是生成一个整体的jar包)

同时, META-INF/MANIFEST.MF 选择和项目跟目录(我也不知道为什么要选根目录,只是网上说不选根目录容易发布失败【我试过不选根目录果然出问题了,千奇百怪的问题】)

 

 

 

 

 

 1.6 勾选上  include in project build,这个不是不须项

 

 

 

验证下,能否使用  ,成功!

 

 

 

 

 

 

 第二步,配置docker 准备发布到docker环境

 

2.1、确认已经按照docker插件,如果没有则先安装

 

 

 2.2在docker服务器上,配置docker允许远程访问(按如下修改一行配置内容)

我们登陆到docker机器上,进行docker远程访问配置:

# vi /lib/systemd/system/docker.service 
修改:
ExecStart=/usr/bin/dockerd -H tcp://tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --containerd=/run/containerd/containerd.sock

重启docker 服务:

[root@dev_vonedao_95 ~]# systemctl daemon-reload
[root@dev_vonedao_95 ~]# systemctl restart docker
[root@dev_vonedao_95 ~]# ps -ef |grep docker
root     12319     1  1 18:27 ?        00:00:00 /usr/bin/dockerd -H tcp://tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --containerd=/run/containerd/containerd.sock
root     12461 12217  0 18:27 pts/0    00:00:00 grep --color=auto docker

再次连接就成功了!

2.3 Idea上  File-Setting 然后Build,Execution,Depolyment 然后选择 Docker 选择添加

 

 

 Name :自己填

链接 docker 选择  :TCP sockect ,Engine API URL 填写:tcp://dockerIP:docker端口 配置正确 且docker启用了 在最下方会自动链接,链接成功则提示“connection successful”

 

2.4 编辑配置项目

 

 

 

 

 如下图 Sever选择 选择之前配置的docker 下面是一些 Build 和Run的参数 (就是 根据参数构建 docker build 很 docker run)

 

 

 

 

 

 第三步,导出到离线服务器

 

docker 导入镜像:
1、将源头镜像 docker save 保存镜像 xxxx.tar
docker save -o analyapi_.tar ecac195d15af
 
2、在目标docker上 load镜像
docker load --input analyapi_1.tar

或者 导入导出 容器 (容器导出后 在import 其实导入的镜像)

docker export c_nameorid -o filename.tar

或者

docker export c_nameorid > filename.tar

 

 然后 

docker import .fienameanddir.tar cname:tag

如 :docker import test.tar c_newbag:v2.2