社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

【实战原创】SpringBoot应用docker化并发布到远程服务器

JAVA葵花宝典 • 5 年前 • 669 次点击  

怎么将你本地docker应用推送到阿里云docker镜像上

很多初学docker得同学都知道docker得方便之处,几个命令就可以搭建 mysql redis等应用,开发出来得SpringBoot项目也可以集成docker,但大都是在本机玩,今天得文章是教大家怎么将docker镜像发布到阿里云机器,实现本地编码,生产运行得效果!

JAVA资料(4.48G).PDF领取

docker历史推送

Docker入门

Docker容器的日志处理

基于win10+Docker+idea的SpringBoot项目容器化部署

使用docker部署spring cloud项目详细步骤

docker开启远程访问接口

docker得环境搭建这里就不重复了,还不会得可以自行去百度,也就几个命令。

想要将本地镜像推送到阿里云得docker容器上,需要开启远程访问权限

首先编辑docker的宿主机文件/lib/systemd/system/docker.service

vi /lib/systemd/system/docker.service

修改以ExecStart开头的行,我这里是腾讯云服务器center os 7 ,修改后为:

image

修改后保存文件,然后通知和重启服务

systemctl daemon-reload
service docker restart

重启完成以后可以在本机验证,通过curl命令可以查看版本信息

curl http://localhost:2375/version
image

开启白名单,让客户端能够远程访问

我们在远程机器开启了端口,但是一般得云服务器都需要设置端口白名单才可以访问,具体设置端口白名单这里就不介绍了,设置完成以后,可以通过外网ip在windows机器浏览器进行访问

image

本地docker项目发布镜像到远程服务器

不以实战为目的得技术就是耍流氓,假设现在有个需求:作为码农得我开发了一个博客系统,现在开发完毕之后想部署到远程服务器上去。

传统部署方案

服务器上装jdk,装tomcat等—>项目打包->ftp上传->启动项目

docker部署方案

docker部署方案:项目集成docker插件->本地打包->项目构建镜像到远程机器->远程服务器下载镜像并启动

通过两套发布流程比较我们就能知道各自得优劣了,这里不再累赘,开始进行第二种方案实战!

首先进行本地环境变量配置

image

如图,配置DOCKER_HOST得远程tcp连接。

为了便于看完文章方便大家实战,这里使用得项目是一个开源得demo案例,项目地址为:https://gitee.com/binary/weixin-java-miniapp-demo/

image

将项目导入到idea里面,我们看看主要得docker相关配置

Dockerfile文件




    
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

maven依赖

  
com.spotify
docker-maven-plugin
1.0.0

${docker.image.prefix}/${project.artifactId}
src/main/docker
http://远程机器外网ip:2375


/
${project.build.directory}
${project.build.finalName}.jar




使用idea自带得docker插件进行构建镜像

首先对项目进行打包

image

打包完成以后,点击docker:build

image

构建成功后日志如下:

"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" "-Dmaven.multiModuleProjectDirectory=E:\my project\weixin-java-miniapp-demo" "-Dmaven.home=D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3" "-Dclassworlds.conf=D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3\bin\m2.conf" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\lib\idea_rt.jar=64265:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version=2018.3.5 com.spotify:docker-maven-plugin:1.0.0:build
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building spring-boot-demo-for-wechat-miniapp 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- docker-maven-plugin:1.0.0:build (default-cli) @ weixin-java-miniapp-demo ---
[INFO] Using authentication suppliers: [ConfigFileRegistryAuthSupplier]
[INFO] Copying E:\my project\weixin-java-miniapp-demo\target\weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar -> E:\my project\weixin-java-miniapp-demo\target\docker\weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar
[INFO] Copying src\main\docker\Dockerfile -> E:\my project\weixin-java-miniapp-demo\target\docker\Dockerfile
[INFO] Building image wx-miniapp-demo/weixin-java-miniapp-demo
Step 1 : FROM openjdk:8-jdk-alpine
---> a3562aa0b991
Step 2 : VOLUME /tmp
---> Using cache
---> 84374a1095fd
Step 3 : ADD weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar app.jar
---> Using cache
---> cc04a43dd67d
Step 4 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
---> Using cache
---> 82cdfc704017
Successfully built 82cdfc704017
[INFO] Built wx-miniapp-demo/weixin-java-miniapp-demo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:50 min
[INFO] Finished at: 2019-11-12T16:43:15+08:00
[INFO] Final Memory: 30M/322M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

此时我们登录远程机器,查看镜像是否发布上来。

可以看到已经构建成镜像并上传到镜像仓库了,并且image id 都一致。那么此时已经大功告成了!镜像都有了,直接一条命令构建容器并启动就可以了!激动人心得时刻即将到来!

docker run -p 8181:8181 --name demo -d 82cdfc704017

正常启动,查看项目允许日志

docker logs -f demo
image

至此大功告成!鼓掌!

JAVA资料(4.48G).PDF领取

推荐阅读

【解惑】Java 代码执行原理

Linux 最常用命令:解决 95% 以上的问题

Java中的13个原子操作类

扫码关注,干货正在路上

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49698
 
669 次点击