在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

docker运行springboot实例

2016-8-29 13:26| 发布者: zhangjf| 查看: 657| 评论: 0

摘要: docker-maven-pluginbuild !-- docker 中使用 -- finalNameapp/finalName plugins plugin groupIdorg.springframework.boot/groupId artifactIdspri ...
docker-maven-plugin
  1. <build>
  2. <!-- docker 中使用 -->
  3. <finalName>app</finalName>
  4. <plugins>
  5. <plugin>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-maven-plugin</artifactId>
  8. </plugin>
  9. <!-- docker 打包 -->
  10. <plugin>
  11. <groupId>com.spotify</groupId>
  12. <artifactId>docker-maven-plugin</artifactId>
  13. <version>0.2.3</version>
  14. <configuration>
  15. <imageName>${project.name}:${project.version}</imageName>
  16. <imageTags>
  17. <imageTag>${project.version}</imageTag>
  18. <imageTag>latest</imageTag>
  19. </imageTags>
  20. <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
  21. <skipDockerBuild>false</skipDockerBuild>
  22. <resources>
  23. <resource>
  24. <directory>${project.build.directory}</directory>
  25. <include>${project.build.finalName}.jar</include>
  26. </resource>
  27. </resources>
  28. </configuration>
  29. <!--直接在package的时候执行docker build-->
  30. <!--<executions>-->
  31. <!--<execution>-->
  32. <!--<phase>package</phase>-->
  33. <!--<goals>-->
  34. <!--<goal>build</goal>-->
  35. <!--</goals>-->
  36. <!--</execution>-->
  37. <!--</executions>-->
  38. </plugin>
  39. </plugins>
  40. </build>
复制代码

指定了jar的名称为app

指定了docker镜像名为${project.name}:${project.version}

Springboot实例
  1. @SpringBootApplication
  2. @RestController
  3. public class SpringbootDockerDemoApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(SpringbootDockerDemoApplication.class, args);
  6. }
  7. @RequestMapping("/")
  8. public String index(){
  9. return "this is index";
  10. }
  11. }
复制代码
docker文件

在src/main/docker文件夹下面建立Dockerfile

  1. FROM java:8
  2. # time zone
  3. RUN echo "Asia/Chongqing" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
  4. RUN mkdir /app
  5. RUN mkdir /app/logs
  6. ADD app.jar /app/app.jar
  7. ADD runboot.sh /app/
  8. RUN bash -c 'touch /app/app.jar'
  9. WORKDIR /app
  10. RUN chmod a+x runboot.sh
  11. CMD /app/runboot.sh
复制代码

runboot.sh的内容

  1. sleep 90
  2. java -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar
复制代码

也可以直接在Dockerfile中用ENTRYPOINT

  1. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
复制代码
设置log4j2.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration status="WARN">
  3. <properties>
  4. <!--定义LOG存储位置-->
  5. <property name="LOG_HOME">/app/logs</property>
  6. <!--定义应用名称-->
  7. <property name="APP_NAME">springboot-docker-demo</property>
  8. </properties>
  9. <Appenders>
  10. <Console name="CONSOLE" target="SYSTEM_OUT">
  11. <PatternLayout pattern="${APP_NAME} %-d{yyyy-MM-dd HH:mm:ss} [%-5p] (%c小贝:%L) %m%n"/>
  12. </Console>
  13. <RollingRandomAccessFile name="ROLLFILE"
  14. fileName="${LOG_HOME}/${APP_NAME}.log"
  15. filePattern="${LOG_HOME}/${APP_NAME}.%d{yyyy-MM-dd-HH}.log">
  16. <PatternLayout pattern="${APP_NAME} %-d{yyyy-MM-dd HH:mm:ss} [%-5p] (%c小贝:%L) %m%n"/>
  17. <Policies>
  18. <!--每隔1小时分割,modulate为true表示以0分为边界-->
  19. <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
  20. </Policies>
  21. </RollingRandomAccessFile>
  22. <!--async appender-->
  23. <Async name="Async">
  24. <appender-ref ref="CONSOLE"/>
  25. <appender-ref ref="ROLLFILE"/>
  26. </Async>
  27. </Appenders>
  28. <Loggers>
  29. <Root level="INFO">
  30. <AppenderRef ref="Async"/>
  31. </Root>
  32. </Loggers>
  33. </Configuration>
复制代码

添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <exclusions>
  5. <!--use log4j2 instead -->
  6. <exclusion>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-logging</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-log4j2</artifactId>
  15. </dependency>
复制代码
build镜像
  1. mvn package -Dskip.test=true
  2. mvn docker:build
  3. docker run -d -p 8080:8080 -v /tmp/docker-logs:/app/logs springboot-docker-demo
  4. http://{docker-machine-ip}:8080/
复制代码
查看日志
  1. docker-machine ssh default
  2. cd /tmp/docker-logs
  3. tail -f springboot-docker-demo.log
复制代码

工程github:springboot-docker-demo

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-8 00:41

Copyright 2015-2025 djqfx

返回顶部