• IDEA远程一键部署SpringBoot到Docker


    IDEA是Java开发利器,Spring Boot是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,如下图所示

     

    重启docker

    1. systemctl daemon-reload
    2. systemctl start docker
     

    开放端口

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

    Idea安装插件,重启

     

    连接远程docker

    1、编辑配置

     

    2、填远程docker地址

     

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

    二、新建项目

     

    创建Spring Boot项目

    项目结构图

     

    1、配置pom

    1. <properties>
    2. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    3. <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
    4. <docker.image.prefix>com.demodocker.image.prefix>
    5. <java.version>1.8java.version>
    6. properties>
    7. <build>
    8. <plugins>
    9. <plugin>
    10. <groupId>org.springframework.bootgroupId>
    11. <artifactId>spring-boot-maven-pluginartifactId>
    12. plugin>
    13. <plugin>
    14. <groupId>com.spotifygroupId>
    15. <artifactId>docker-maven-pluginartifactId>
    16. <version>1.0.0version>
    17. <configuration>
    18. <dockerDirectory>src/main/dockerdockerDirectory>
    19. <resources>
    20. <resource>
    21. <targetPath>/targetPath>
    22. <directory>${project.build.directory}directory>
    23. <include>${project.build.finalName}.jarinclude>
    24. resource>
    25. resources>
    26. configuration>
    27. plugin>
    28. <plugin>
    29. <artifactId>maven-antrun-pluginartifactId>
    30. <executions>
    31. <execution>
    32. <phase>packagephase>
    33. <configuration>
    34. <tasks>
    35. <copy todir="src/main/docker" file="target/${project.artifactId}-${project.groupId}"/>
    36. tasks>
    37. configuration>
    38. <goals>
    39. <goal>rungoal>
    40. goals>
    41. execution>
    42. executions>
    43. plugin>
    44. plugins>
    45. build>
    46. <dependencies>
    47. <dependency>
    48. <groupId>org.springframework.bootgroupId>
    49. <artifactId>spring-boot-starter-webartifactId>
    50. dependency>
    51. <dependency>
    52. <groupId>org.springframework.bootgroupId>
    53. <artifactId>spring-boot-starter-testartifactId>
    54. <scope>testscope>
    55. dependency>
    56. <dependency>
    57. <groupId>log4jgroupId>
    58. <artifactId>log4jartifactId>
    59. <version>1.2.17version>
    60. dependency>
    61. dependencies>

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

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

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

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

    4、创建DockerApplication文件

    1. @SpringBootApplication
    2. public class DockerApplication {
    3. public static void main(String[] args) {
    4. SpringApplication.run(DockerApplication.class, args);
    5. }
    6. }
     

    5、创建DockerController文件

    1. @RestController
    2. public class DockerController {
    3. static Log log = LogFactory.getLog(DockerController.class);
    4. @RequestMapping("/")
    5. public String index() {
    6. log.info("Hello Docker!");
    7. return "Hello Docker!";
    8. }
    9. }

    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 部署 Spring Boot 项目到Docker成功!难以想象,部署一个Javaweb项目竟然如此简单方便!

  • 相关阅读:
    小网SIM卡QMI拨号无法获取IPv6地址问题的分析
    Sub-1G射频收发器soc芯片 UM2080F32 低功耗 32 位 IoTP
    函数柯里化
    Windows10用Navicat 定时备份报错80070057
    面试--并发多线程基础
    【minitab】--logistic回归
    《2023中国企业数智化转型升级服务全景图/产业图谱2.0版》重磅发布
    关于Redis在windows上运行及fork函数问题
    一个弹出的虚假安全警告去除
    NPDP考什么?难度大不大?
  • 原文地址:https://blog.csdn.net/caryxp/article/details/134458860