转自:陶章好

链接:https://juejin.im/post/5d026212f265da1b8608828b

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,如下图所示

3. 重启docker

 systemctl daemon-reloadsystemctl start docker

4. 开放端口

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

5. Idea安装插件,重启

6. 连接远程docker

(1) 编辑配置

  

(2) 填远程docker地址

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

二、新建项目

1. 创建springboot项目

项目结构图

(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.0</modelVersion><groupId>docker-demo</groupId><artifactId>com.demo</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.2.RELEASE</version><relativePath /></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><docker.image.prefix>com.demo</docker.image.prefix><java.version>1.8</java.version></properties><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><dockerDirectory>src/main/docker</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin><plugin><artifactId>maven-antrun-plugin</artifactId><executions><execution><phase>package</phase><configuration><tasks><copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy></tasks></configuration><goals><goal>run</goal></goals></execution></executions></plugin></plugins></build>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></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文件

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

(5) 创建DockerController文件

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

(6) 增加配置

命令解释

Image tag : 指定镜像名称和tag,镜像名称为 docker-demo,tag为1.1
Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]

Bind mounts : 将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]。这个springboot项目会将日志打印在容器

/home/developer/app/logs/ 目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。

(7) Maven打包

(8) 运行

先pull基础镜像,然后再打包镜像,并将镜像部署到远程docker运行

这里我们可以看到镜像名称为docker-demo:1.1,docker容器为docker-server

(9) 运行成功

(10) 浏览器访问

(11) 日志查看

自此通过idea 部署springboot项目到docker成功!难以想象,部署一个Javaweb项目竟然如此简单方便!

完美:Docker遇到Intellij IDEA这个插件,再次解放生产力~相关推荐

  1. IntelliJ IDEA插件php golang python shell docker ignore UML plantuml等插件安装

    IntelliJ IDEA插件php golang python shell docker ignore UML plantuml等插件安装 有的插件,需要代理才能搜索和下载 设置代理 不然插件搜索不 ...

  2. Intellij IDEA必备插件,提高效率的“七种武器”!

    常言道"工欲善其事必先利其器",作为一个程序员,一个好的IDE可以起到事半功倍的效果.2020 JVM 生态报告显示 Intellij IDEA 已经成为Java开发者的首选.In ...

  3. docker环境 快速使用elasticsearch-head插件

    docker环境 快速使用elasticsearch-head插件 #elasticsearch配置 #进入elk容器 docker exec -it elk /bin/bash #head插件访问配 ...

  4. docker安装rabbitmq延时队列插件

    docker安装rabbitMQ延时队列插件(delayed_message_exchange) 1. 查找Docker容器中的RabbitMQ镜像 docker ps -a [root@linux ...

  5. IntelliJ IDEA下载插件超时--解决方法

    IntelliJ IDEA下载插件超时--解决方法 方法一:取消使用安全连接方式 菜单 -> IntelliJ IDEA -> Preferences -> Apprearance ...

  6. idea中下载插件超时_完美解决idea无法搜索下载插件的问题

    IDEA无法搜索插件 最近重装了系统,需要配置好多环境,但当我在idea中搜索插件的时候,发现idea Plugins居然搜索不到插件,百度了下,有些是设置idea勾选的,不过我试了之后,然并卵... ...

  7. Intellij IDEA 安装插件 报 ‘plugin xxxx is incompatible‘ 解决方案

    Intellij IDEA 安装插件 报 'plugin xxxx is incompatible' 解决方案 参考文章: (1)Intellij IDEA 安装插件 报 'plugin xxxx i ...

  8. Docker(七)--Docker数据卷管理及插件

    一.Docker 数据卷管理 在实际使用过程中,我们需要把容器和数据进行隔离,因为容器在使用过程中可能随时要进行销毁,但是数据要保留下来,所以我们要做数据的持久化. 为什么要用数据卷 docker分层 ...

  9. 啦啦外卖独立版41.7完美运营版!全功能插件

    啦啦外卖独立版41.7完美运营版!全功能插件

  10. IntelliJ IDEA 的插件 常用的 idea 好用 idea 插件 以此收藏防丢失

    IntelliJ IDEA 的插件 常用的 idea 好用 idea 插件 以此收藏防丢失 1. AiXcoder Code completer 强烈安利!!! 它以快速的提示代码,修复某些输入错的中 ...

最新文章

  1. IRP和IO_STACK_LOCATION结构
  2. Linux内核I/O系统报错日志与硬盘故障对应关系
  3. java5的递归算法_Java基础入门(五)之方法以及递归算法
  4. excel批量更改超链接_Excel如何批量建立超链接,搭建工作台
  5. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )
  6. POJ 3687 Labeling Balls【拓扑排序】
  7. Spring IOC 容器源码分析 - 余下的初始化工作
  8. java中or和and的优先级_x86处理器汇编语言AND和OR运算符优先级
  9. mongodb添加创建修改时间_MongoDB数据库插入、更新和删除操作详解
  10. 腾讯视频主演角色弹幕怎么发
  11. Python:导出QQ聊天记录-让我们看看逗比群友都在聊什么
  12. 数据分析系列:Z 检验和 T 检验的应用及代码实现
  13. springboot配置mysql
  14. 【电脑全部浏览器显示您与网站连接不是私密连接】
  15. 无线路由器无法在计算机上设置,无线路由器设置管理地址无法打开解决方法
  16. Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录
  17. 网络安全实验室|网络信息安全攻防学习平台(基础关)
  18. 高分一号影像处理流程
  19. 微信公众号流量主的实际收益(本人亲测)
  20. 电路原理笔记整理,电路知识点总结

热门文章

  1. 专业好用的数据恢复软件推荐
  2. 数据库索引为什么用B+树实现?
  3. 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)
  4. 【smart-transform】取自Atom的babeljs/cs/ts智能转es5 库
  5. SQL--数据--基本操作
  6. Linux 中 用cat 输出文件内容
  7. 解决异常:公共语言运行时检测到无效的程序
  8. learning - Haskell AND Lisp vs. Haskell OR Lisp - Programmers Stack Exchange
  9. 末日前的唠叨:SEO之四大要不得
  10. c#进销存(1):需求分析