https://mp.weixin.qq.com/s/qPDBwCJOOXvpFTxYnYxEug(图片请看源链接) 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-reload systemctl start docker4. 开放端口firewall-cmd --zone=public --add-port=2375/tcp --permanent5. Idea安装插件,重启图片图片6. 连接远程docker(1) 编辑配置图片图片(2) 填远程docker地址图片图片(3) 连接成功,会列出远程docker容器和镜像图片图片二、新建项目1. 创建springboot项目项目结构图图片图片(1) 配置pom文件<?xml version="1.0" encoding="UTF-8"?> 4.0.0 docker-demo com.demo 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.0.2.RELEASE <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> org.springframework.boot spring-boot-maven-plugin com.spotify docker-maven-plugin 1.0.0 src/main/docker /
p
r
o
j
e
c
t
.
b
u
i
l
d
.
d
i
r
e
c
t
o
r
y
<
/
d
i
r
e
c
t
o
r
y
>
<
i
n
c
l
u
d
e
>
{project.build.directory}</directory> <include>
project.build.directory</directory><include>{project.build.finalName}.jar maven-antrun-plugin package run org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test log4j log4j 1.2.17 (2) 在src/main目录下创建docker目录,并创建Dockerfile文件FROM openjdk:8-jdk-alpineADD *.jar app.jarENTRYPOINT “java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar" 在resource目录下创建application.properties文件logging.config=classpath:logback.xmllogging.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) 增加配置图片图片图片图片图片图片命令解释 ?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项目竟然如此简单方便!
|