docker php 一键部署_Java开发提升十倍生产力:Idea远程一键部署springboot到Docker

IDEA是Java开发利器,springboot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?

一、开发前准备

1.Docker安装

可以参考:

https://docs.docker.com/install/

2.配置docker远程连接端口

  vi /usr/lib/systemd/system/docker.service

找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示

0af000e4de578c4c26b29f2cdceb62aa.png

3.重启docker

 systemctl daemon-reload
 systemctl start docker

4.开放端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent  

5.Idea安装插件,重启

fb3e57c69edc5ab9406a9b382aa768d9.png

6.连接远程docker

1、编辑配置

5f38409118060c9d583f27cb177bc1c4.png

2、填远程docker地址

52da8621b45309452811ef6be647421a.png

3、连接成功,会列出远程docker容器和镜像

04e39f92935eb6923c691c2480201a39.png

二、新建项目

1.创建springboot项目

项目结构图

6d67cb13b8cca45df2bf6418fb07d360.png

1、配置pom文件

<?xml  version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><groupId>docker-demogroupId><artifactId>com.demoartifactId><version>1.0-SNAPSHOTversion><parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.0.2.RELEASEversion><relativePath />parent><properties><project.build.sourceEncoding>UTF-8project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding><docker.image.prefix>com.demodocker.image.prefix><java.version>1.8java.version>properties><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin><plugin><groupId>com.spotifygroupId><artifactId>docker-maven-pluginartifactId><version>1.0.0version><configuration><dockerDirectory>src/main/dockerdockerDirectory><resources><resource><targetPath>/targetPath><directory>${project.build.directory}directory><include>${project.build.finalName}.jarinclude>resource>resources>configuration>plugin><plugin><artifactId>maven-antrun-pluginartifactId><executions><execution><phase>packagephase><configuration><tasks><copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}">copy>tasks>configuration><goals><goal>rungoal>goals>execution>executions>plugin>plugins>build><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope>dependency><dependency><groupId>log4jgroupId><artifactId>log4jartifactId><version>1.2.17version>dependency>dependencies>project>

2、在src/main目录下创建docker目录,并创建Dockerfile文件

FROM openjdk:8-jdk-alpine
ADD *.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

3、在resource目录下创建application.properties文件

logging.config=classpath:logback.xml
logging.path=/home/developer/app/logs/
server.port=8990

4、创建DockerApplication文件

@SpringBootApplicationpublic class DockerApplication {public static void main(String[] args) {
        SpringApplication.run(DockerApplication.class, args);
    }
}

5、创建DockerController文件

@RestControllerpublic class DockerController {
    static Log log = LogFactory.getLog(DockerController.class);@RequestMapping("/")public String index() {
        log.info("Hello Docker!");return "Hello Docker!";
    }
}

6、增加配置

310e0f9732a86bd59b39cd739e42b2ef.png

5cd4b79e5b69fa77b11aceca2d5c9870.png

dcd3905cad946a89e02edcc5ce0c11a2.png

命令解释:

  • Image tag : 指定镜像名称和tag,镜像名称为 docker-demo,tag为1.1
  • Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]
  • Bind mounts : 将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]。这个springboot项目会将日志打印在容器 /home/developer/app/logs/ 目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。
7、Maven打包ac8cd06379456c98c6ded1ce2988ee6c.png8、运行55d315b059cc456355bf7fc758029491.png1eff71ca44423a5ff4a7c2603709352b.png先pull基础镜像,然后再打包镜像,并将镜像部署到远程docker运行b086b4df07c3064c70a41b744fe48faf.png这里我们可以看到镜像名称为docker-demo:1.1,docker容器为docker-server9、运行成功b67cd50d24b0320c587d129168dc4e08.png10、浏览器访问19767cfa20b451298bc39f39bd6f60d1.png11、日志查看fe3245f6d06d6573ea1f29f33020d0db.png自此,通过IDEA 部署springboot项目到docker成功!难以想象,部署一个Javaweb项目竟然如此简单方便!End

扩展阅读

如何让你的SQL运行得更快

SpringBoot 应用部署于外置 Tomcat 容器

7大绝招帮你轻轻松松提升MySQL性能

这可能是最为详细的Docker入门吐血总结

Intellij IDEA神器那些让人爱不释手的小技巧

作者:陶章好

来源:https://juejin.im/post/5d026212f265da1b8608828b

0755270309d7d09d2aec451c6c0ec98b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四个人过桥的题目_云南的几种“勾魂”特产,舌尖上的美味,让人回味无穷,你吃过吗...

云南&#xff0c;彩云之南&#xff0c;说到云南美食&#xff0c;大家可能第一反应都是“米线呀&#xff01;”害&#xff01;大云南的美食可多了&#xff0c;你可不能只知道这一个&#xff0c;号称花城的云南&#xff0c;这里的美食也是“遍地开花”。过桥米线一碗过桥米线&…

逐!帧!揭!秘!终于能看清波士顿动力机器人的细节了

来源&#xff1a;乾明&#xff1b;发自 凹非寺&#xff1b;量子位报道波士顿动力&#xff0c;逆天机器人的代名词。每一次新的视频放出&#xff0c;机器人做出各种充满视觉冲击力动作&#xff0c;都会引起疯狂传播。凭借敏捷的身姿和动物般的反应能力&#xff0c;它们做出了各种…

数学建模matlab画图操作大全

数学建模matlab画图操作大全 1.画图及一些基本设置 clear%清空工作区 clc%清空命令行窗口 close all%关闭所有图窗 x-40:0.1:40 f(x) x.^2-110;%函数句柄 x0fzero(f,15)%找15附近的零点 x0fminsearch(f,-11)%找-11附近的最小值%% 画图及其基本操作 %画图&#xff0c;默认格式…

python语言的产生_Python生成器是什么(超级详细)

之前我们讨论了高效的推导式。通过推导式&#xff0c;我们可以直接创建一个列表、字典或集合。但是&#xff0c;由于受到内存的限制&#xff0c;这些可迭代对象&#xff08;列表、字典或集合&#xff09;的容量是有限的。 比如&#xff0c;创建一个包含 10 万个元素的列表&…

俄罗斯“木船”机器人系统将于2020年部署部队

来源&#xff1a;国防科技要闻据悉&#xff0c;俄罗斯地面部队已完成“木船”&#xff08;Kungas&#xff09;机器人系统样机的国家试验&#xff0c;将于2020年开始部署部队&#xff0c;用于作战试验。发展背景自2010年以来&#xff0c;俄罗斯机器人系统进入快速发展时期。2014…

线程停止继续_晓龙吊打面试官系列: 如何优雅的停止一个线程

一、什么时候我们需要中断一个线程在实际的开发中&#xff0c;有很多场景需要我们中断一个正在运行的线程&#xff0c;就比如&#xff1a;当我们使用抢票软件时&#xff0c;其中某一个通道已经抢到了火车票&#xff0c;这个时候我们就需要通知其他线程停止工作。当我们希望在一…

hive读取hdfs存放文件_数据获取层之Flume快速入门(一) 实时监控单个追加文件

实时监控 Hive 日志&#xff0c;并上传到 HDFS 中实现步骤1、Flume 要想将数据输出到 HDFS&#xff0c;必须持有 Hadoop 相关 jar 包commons-configuration-1.6.jar、hadoop-auth-2.7.2.jar、hadoop-common-2.7.2.jar、hadoop-hdfs-2.7.2.jar、commons-io-2.4.jar、htrace-core…

2019-2020中国趋势报告,203页PPT解读16大机会

来源&#xff1a;企鹅智库 报告如下未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联…

行程单图片python预处理_GCC编译过程(预处理-gt;编译-gt;汇编-gt;链接)

前言如果你使用集成环境开发。那么你点击编译按钮就可生成可执行文件。但是C程序从源代码到二进制行程序都经历了那些过程&#xff1f;你知道吗&#xff1f;这些过程集成开发环境在点击编译按钮后都做完了&#xff0c;如果编译没有出错&#xff0c;即可生成可执行文件。本文将以…

sqlite查询乘以某列如果是null就换成_大数据之Hive group by with cube/rollup分组查询...

group bysql 查询时&#xff0c;我们常将聚合函数和group by 结合起来对某一个或多个字段进行分组查询&#xff0c;例如&#xff1a;select addcode,count(distinct sbtid)uv from tb_hive_window group by addcode;---------------| addcode | uv |---------------| 0002 …

可以操作excel吗_Excel快速填充,这四种方法你会吗?操作逆天告别加班

在Excel的表格制作中&#xff0c;仅仅会复制粘贴可是不够的&#xff0c;还需要掌握更多的技能&#xff0c;来提升我们的工作效率&#xff01;我们在进行Excel报表制作的时候&#xff0c;如果要批量填充序号&#xff0c;有多少种方法呢&#xff1f;下面给大家简单介绍一下这四种…

2G---5G与未来天线技术

本文来源&#xff1a;滤波器过去二十年&#xff0c;我们见证了移动通信从1G到4G LTE的转变。在这期间&#xff0c;通信的关键技术在发生变化&#xff0c;处理的信息量成倍增长。而天线&#xff0c;是实现这一跨越式提升不可或缺的组件。按照业界的定义&#xff0c;天线是一种变…

python操作csv文件第7行开始的数据_Python教程-Python读写CSV文件

前言 本教程学习在Python中使用CSV文件。CSV&#xff08;逗号分隔值&#xff09;格式是在电子表格和数据库中使用的非常流行的导入和导出格式。Python语言包含该模块&#xff0c;该模块具有用于读取和写入CSV格式的数据的类。csv 使用csv.reader&#xff08;&#xff09;读取CS…

基于STM32的高精度频率计设计

前言 本文记录了博主完成的一个课设作品&#xff08;学分为3.5分&#xff09;&#xff0c;题目需要利用ARM做出一个高精度频率计。具体要求如下&#xff1a; 1&#xff09;实现对10M以内数字信号频率的高精度测量&#xff0c;频率测量误差不大于0.01%&#xff1b; 2&#xff0…

数学的意义(一)

来源&#xff1a; 数学职业家数学既是一种文化、一种“思想的体操”&#xff0c;更是现代理性文化的核心。马克思说&#xff1a;“一门科学只有当它达到了能够成功地运用数学时&#xff0c;才算真正发展了。”在前几次科技革命中&#xff0c;数学大都起到先导和支柱作用。我们不…

python弹球小游戏程序_Python实现弹球小游戏

本文主要给大家分享一个实战项目&#xff0c;通过python代码写一款我们儿时大多数人玩过的游戏---小弹球游戏。只不过当时&#xff0c;我们是在游戏机上玩&#xff0c;现在我们通过运行代码来玩&#xff0c;看看大家是否有不一样的体验&#xff0c;是否可以重温当年的乐趣呢&am…

强化学习决策生成-以 Q-learning 为例

强化学习决策生成-以 Q-learning 为例

【数据中台】关于数据中台系统,需要了解哪些技术?

来源&#xff1a;产业智能官国家建材大数据研究中心今天让我们全面解读中台&#xff0c;包括企业为什么要平台化&#xff0c;目前中台都有哪些形式&#xff0c;实施中台系统的优势、面临的问题以及建议都有哪些&#xff1f;中台这个概念早期是由美军的作战体系演化而来的&#…

什么是启发式?什么是产生式?

来源&#xff1a;人机与认知实验室一般而言&#xff0c;机器常常被设定从已知推未知&#xff0c;而人们不时会从未知&#xff08;假设&#xff09;推未知&#xff0c;特殊情形下也有从未知推已知的&#xff0c;这些推导中常见的有产生式和启发式&#xff0c;那么究竟什么是产生…

Maven项目错误解决小结

http://blog.csdn.net/typa01_kk/article/details/49185759 Maven项目错误解决小结 注&#xff1a;整理错误&#xff0c;不喜欢为了一个小问题&#xff0c;占篇幅&#xff0c;所以请CtrlF自己查看&#xff0c;定位问题&#xff0c;愿为解决. 注&#xff1a;网络上的错误解决经验…