• DockerFile发布Java微服务并部署到Docker容器


    目录

    通过idea新建一个普通微服务项目

    一、新建项目

    二、POM 

    三、YML 

    四、启动类

    五、Controller类

    启动

    通过Dockerfile发布微服务部署到docker容器

    一、通过idea生成一个jar包

    二、编写Dockerfile

    三、构建镜像

    四、运行容器 

    五、访问测试


    本篇博客的重点在于docker不在于java,所以第一部分直接复制即可。

    通过idea新建一个普通微服务项目

    一、新建项目


    二、POM 

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <parent>
    5. <groupId>org.springframework.bootgroupId>
    6. <artifactId>spring-boot-starter-parentartifactId>
    7. <version>2.7.2version>
    8. <relativePath/>
    9. parent>
    10. <groupId>com.examplegroupId>
    11. <artifactId>dockerartifactId>
    12. <version>0.0.1-SNAPSHOTversion>
    13. <name>dockername>
    14. <description>dockerdescription>
    15. <properties>
    16. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    17. <maven.compiler.source>1.8maven.compiler.source>
    18. <maven.compiler.target>1.8maven.compiler.target>
    19. <junit.version>4.12junit.version>
    20. <log4j.version>1.2.17log4j.version>
    21. <lombok.version>1.16.18lombok.version>
    22. <mysql.version>5.1.47mysql.version>
    23. <druid.version>1.1.16druid.version>
    24. <mapper.version>4.1.5mapper.version>
    25. <mybatis.spring.boot.version>1.3.0mybatis.spring.boot.version>
    26. properties>
    27. <dependencies>
    28. <dependency>
    29. <groupId>org.springframework.bootgroupId>
    30. <artifactId>spring-boot-starter-webartifactId>
    31. dependency>
    32. <dependency>
    33. <groupId>org.springframework.bootgroupId>
    34. <artifactId>spring-boot-starter-actuatorartifactId>
    35. dependency>
    36. <dependency>
    37. <groupId>org.springframework.bootgroupId>
    38. <artifactId>spring-boot-starter-testartifactId>
    39. <scope>testscope>
    40. dependency>
    41. dependencies>
    42. <build>
    43. <plugins>
    44. <plugin>
    45. <groupId>org.springframework.bootgroupId>
    46. <artifactId>spring-boot-maven-pluginartifactId>
    47. <configuration>
    48. <excludes>
    49. <exclude>
    50. <groupId>org.projectlombokgroupId>
    51. <artifactId>lombokartifactId>
    52. exclude>
    53. excludes>
    54. configuration>
    55. plugin>
    56. <plugin>
    57. <groupId>org.apache.maven.pluginsgroupId>
    58. <artifactId>maven-resources-pluginartifactId>
    59. <version>3.1.0version>
    60. plugin>
    61. plugins>
    62. build>
    63. project>

    三、YML 

    对,你没看错,就是这么一行

    server.port=6001

    四、启动类

    1. package com.docker;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. @SpringBootApplication
    5. public class DockerApplication
    6. {
    7. public static void main(String[] args)
    8. {
    9. SpringApplication.run(DockerApplication.class, args);
    10. }
    11. }

    五、Controller类

    1. package com.docker.Controller;
    2. import org.springframework.beans.factory.annotation.Value;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import org.springframework.web.bind.annotation.RequestMethod;
    5. import org.springframework.web.bind.annotation.RestController;
    6. import java.util.UUID;
    7. @RestController
    8. public class OrderController {
    9. @Value("${server.port}")
    10. private String port;
    11. //http://localhost:6001/order/docker
    12. @RequestMapping("/order/docker")
    13. public String helloDocker() {
    14. return "hello docker" + "\t" + port + "\t" + UUID.randomUUID().toString();
    15. }
    16. //localhost:6001/order/index
    17. @RequestMapping(value = "/order/index", method = RequestMethod.GET)
    18. public String index() {
    19. return "服务端口号: " + "\t" + port + "\t" + UUID.randomUUID().toString();
    20. }
    21. }

    启动

    看看能否正常运行

    成功启动并拿到数据!


    通过Dockerfile发布微服务部署到docker容器

    一、通过idea生成一个jar包

    点开maven,刷新一下,然后点击生成jar包

    查看其地址位置 

    使用Xftp传输到宿主机中 (根目录下的mydocker目录) 

    在宿主机中查看一下:

    ls /mydocker


    二、编写Dockerfile

    在/mydocker目录下新建Dockerfile注意大小写

    vim Dockerfile

    将以下内容复制进去: 

    1. FROM java:8
    2. # 基础镜像使用java
    3. MAINTAINER van
    4. # 作者
    5. VOLUME /tmp
    6. # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
    7. ADD docker-0.0.1-SNAPSHOT.jar van_docker.jar
    8. # 将jar包添加到容器中并更名为van_docker.jar
    9. RUN bash -c 'touch /van_docker.jar'
    10. # 运行jar包
    11. ENTRYPOINT ["java","-jar","/van_docker.jar"]
    12. EXPOSE 6001
    13. #暴露6001端口作为微服务

    三、构建镜像

    这里注意空格和点:

    docker build -t van_docker:1.6 .
    

     构建完成,使用docker images查看一下:

    docker images


    四、运行容器 

    运行,微服务就直接-d后台运行即可,注意自己的镜像ID: 

    docker run -d -p 6001:6001 1de5bcb75c65
    


    五、访问测试

    访问宿主机ip地址:端口号/目录

     或者在宿主机中用curl查看:

    curl 127.0.0.1:6001/order/docker
    
    curl 127.0.0.1:6001/order/index

    都成功访问并拿到了数据,部署成功。 

  • 相关阅读:
    Python正则表达式学习笔记(入门)
    力扣:674. 最长连续递增序列
    Kyligence 当选 Gartner 2022 中国数据管理 Cool Vendor
    顶象助力多家中央政企单位等保2.0安全合规建设
    如何合理估算 Java 线程池大小
    再突破!阿里云进入Gartner云AI开发者服务挑战者象限
    神经系统分类介绍视频,神经系统分类介绍图片
    git 批量删除本地分支
    学信息系统项目管理师第4版系列20_风险管理
    elk下载地址
  • 原文地址:https://blog.csdn.net/Trollz/article/details/126119642