前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【实战原创】SpringBoot应用docker化并发布到远程服务器

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

作者头像
JAVA葵花宝典
发布2019-11-15 16:11:14
1.2K0
发布2019-11-15 16:11:14
举报
文章被收录于专栏:JAVA葵花宝典JAVA葵花宝典

docker历史推送

Docker入门

Docker容器的日志处理

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

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

docker开启远程访问接口

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

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

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

代码语言:javascript
复制
vi /lib/systemd/system/docker.service

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

image

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

代码语言:javascript
复制
systemctl daemon-reload
service docker restart

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

代码语言:javascript
复制
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文件
代码语言:javascript
复制
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依赖
代码语言:javascript
复制
  <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <dockerHost>http://远程机器外网ip:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

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

首先对项目进行打包

image

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

image

构建成功后日志如下:

代码语言:javascript
复制
"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 都一致。那么此时已经大功告成了!镜像都有了,直接一条命令构建容器并启动就可以了!激动人心得时刻即将到来!

代码语言:javascript
复制
docker run -p 8181:8181 --name demo -d 82cdfc704017

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

代码语言:javascript
复制
docker logs -f demo

image

至此大功告成!鼓掌!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA葵花宝典 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker历史推送
  • docker开启远程访问接口
  • 开启白名单,让客户端能够远程访问
  • 本地docker项目发布镜像到远程服务器
    • 传统部署方案
      • docker部署方案
        • Dockerfile文件
        • maven依赖
      • 使用idea自带得docker插件进行构建镜像
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档