You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 3.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. # spring-boot-demo-docker
  2. > 本 demo 主要演示了如何容器化一个 Spring Boot 项目。通过 `Dockerfile` 的方式打包成一个 images 。
  3. ## Dockerfile
  4. ```dockerfile
  5. # 基础镜像
  6. FROM openjdk:8-jdk-alpine
  7. # 作者信息
  8. MAINTAINER "Yangkai.Shen 237497819@qq.com"
  9. # 添加一个存储空间
  10. VOLUME /tmp
  11. # 暴露8080端口
  12. EXPOSE 8080
  13. # 添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
  14. ARG JAR_FILE=target/spring-boot-demo-docker.jar
  15. # 往容器中添加jar包
  16. ADD ${JAR_FILE} app.jar
  17. # 启动镜像自动运行程序
  18. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]
  19. ```
  20. ## 打包方式
  21. ### 手动打包
  22. 1. 前往 Dockerfile 目录,打开命令行执行
  23. ```bash
  24. $ docker build -t spring-boot-demo-docker .
  25. ```
  26. 2. 查看生成镜像
  27. ```bash
  28. $ docker images
  29. REPOSITORY TAG IMAGE ID CREATED SIZE
  30. spring-boot-demo-docker latest bc29a29ffca0 2 hours ago 119MB
  31. openjdk 8-jdk-alpine 97bc1352afde 5 weeks ago 103MB
  32. ```
  33. 3. 运行
  34. ```bash
  35. $ docker run -d -p 9090:8080 spring-boot-demo-docker
  36. ```
  37. ### 使用 maven 插件打包
  38. 1. pom.xml 中添加插件
  39. 2. ```xml
  40. <properties>
  41. <dockerfile-version>1.4.9</dockerfile-version>
  42. </properties>
  43. <plugins>
  44. <plugin>
  45. <groupId>com.spotify</groupId>
  46. <artifactId>dockerfile-maven-plugin</artifactId>
  47. <version>${dockerfile-version}</version>
  48. <configuration>
  49. <repository>${project.build.finalName}</repository>
  50. <tag>${project.version}</tag>
  51. <buildArgs>
  52. <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
  53. </buildArgs>
  54. </configuration>
  55. <executions>
  56. <execution>
  57. <id>default</id>
  58. <phase>package</phase>
  59. <goals>
  60. <goal>build</goal>
  61. </goals>
  62. </execution>
  63. </executions>
  64. </plugin>
  65. </plugins>
  66. ```
  67. 2. 执行mvn打包命令,因为插件中 `execution` 节点配置了 package,所以会在打包的时候自动执行 build 命令。
  68. ```bash
  69. $ mvn clean package -Dmaven.test.skip=true
  70. ```
  71. 3. 查看镜像
  72. ```bash
  73. $ docker images
  74. REPOSITORY TAG IMAGE ID CREATED SIZE
  75. spring-boot-demo-docker 1.0.0-SNAPSHOT bc29a29ffca0 2 hours ago 119MB
  76. openjdk 8-jdk-alpine 97bc1352afde 5 weeks ago 103MB
  77. ```
  78. 4. 运行
  79. ```bash
  80. $ docker run -d -p 9090:8080 spring-boot-demo-docker:1.0.0-SNAPSHOT
  81. ```
  82. ## 参考
  83. - docker 官方文档:https://docs.docker.com/
  84. - Dockerfile 命令,参考文档:https://docs.docker.com/engine/reference/builder/
  85. - maven插件使用,参考地址:https://github.com/spotify/dockerfile-maven