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;它们做出了各种…

五大原则让你的代码不再受bug的困扰

牢记以下五项基本原则&#xff0c;能够帮助大家尽可能减少代码中的bug。  Java编程语言的人气自然无需质疑&#xff0c;从Web应用到Android应用&#xff0c;这款语言已经被广泛用于开发各类应用及代码中的复杂功能。  不过在编写代码时&#xff0c;bug永远是困扰每一位从业…

数学建模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;默认格式…

oracle wd2go 转_WD2go的作用是()。

WD2go的作用是()。更多相关问题[单选] 电瓶有两级&#xff0c;分别用“”、“—”表示&#xff0c;“”代表()级。[问答题,简答题] 电容器的可分为哪几类&#xff1f;有哪些选用原则&#xff1f;[问答题,简答题] 295B、WK—4、WK—10电铲回转托辊数目&#xff1f;结构不同&…

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

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

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

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

Oracle优化笔记

2016-11-22子查询&#xff1a;标量子查询 内联视图&#xff08;in-line view&#xff09; 半连接/反连接标量子查询 select 后跟子查询 类似自定义函数 可用开窗函数之类的改写内联视图&#xff08;in-line view&#xff09; from 后跟子查询 类似设计View 子查询套子查询是垃圾…

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

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

数模写作必备利器—latex

数模写作技巧——用latex排版写作 视频地址在我自己的b站 https://www.bilibili.com/video/BV1Pp4y1e7fU/ 数模写作培训

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;开展互联…

242.判断一个字符串是否为另一个的乱序 Valid Anagram

错误1"aa""bb"static public bool IsAnagram(string s, string t) { int sLength s.Length; int tLength t.Length; if (sLength ! tLength) { return false; } char c ; int value 0; Dictionary<char, int> d new Dictionary<char, int&g…

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

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

树莓派装系统,配置,换源,远程操控

一、树莓派装系统&#xff0c;配置&#xff0c;换源&#xff0c;远程操控 1.装系统 省略 2.各种协议的使能&#xff0c;配置 参考树莓派教程文档 3.换源 3.1系统更新源的更换 sudo nano /etc/apt/sources.list #注释掉原始国外源&#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 …

Windows下MYSQL的安装与配置

配置&#xff1a; 1. 安装MySQL服务 cmd(管理员模式)下切换到MySQL的bin目录&#xff0c;运行 mysqld install 2. 输入 net start mysql 启动服务 3. 输入 mysql -uroot -p 进入&#xff0c;默认无密码 4. 设置密码 mysqladmin -uroot -p 新密码 &#xff08;会提示输入密码&am…

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

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

我的一个树莓派小车项目

如何使用该程序进行开发 1.寻找串口 查看识别串口号 ls -l /dev/tty*找到相应的串口并在程序里修改 ser serial.Serial("/dev/ttyUSB0",9600)2.摄像头 括号里是0还是1取决于摄像头是内部还是外部 不确定的话就挨着尝试&#xff0c;反正就是二选一嘛 #视频捕获…

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

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