
Dockerfile
1FROM java:8 2VOLUME /tmp 3ADD maven/sms-0.0.1-SNAPSHOT.jar app.jar 4RUN sh -c 'touch /app.jar' 5ENV TZ=Asia/Shanghai 6RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 7ENV JAVA_OPTS="" 8ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
application.properties
1# tomcat 2server.port=8088 3server.max-http-header-size=10000000
logback.xml
1<?xml version="1.0" encoding="UTF-8"?> 2<configuration debug="false"> 3 <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> 4 <property name="LOG_HOME" value="/sms" /> 5 <!-- 控制台输出 --> 6 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 7 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 8 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 9 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n</pattern> 10 </encoder> 11 </appender> 12 <!-- 按照每天生成日志文件 --> 13 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 14 <file>${LOG_HOME}/sms.log</file> 15 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 16 <!--日志文件输出的文件名--> 17 <FileNamePattern>${LOG_HOME}/sms.%d{yyyy-MM-dd}.log</FileNamePattern> 18 <!--日志文件保留天数--> 19 <MaxHistory>30</MaxHistory> 20 </rollingPolicy> 21 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 22 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 23 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n</pattern> 24 </encoder> 25 <!--日志文件最大的大小 26 <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 27 <MaxFileSize>10MB</MaxFileSize> 28 </triggeringPolicy>--> 29 </appender> 30 31 <!-- 日志输出级别 --> 32 <root level="INFO"> 33 <!--<appender-ref ref="STDOUT" />--> 34 <appender-ref ref="FILE" /> 35 </root> 36</configuration>
pom.xml
1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.abc</groupId> 8 <artifactId>sms</artifactId> 9 <version>0.0.1-SNAPSHOT</version> 10 <packaging>jar</packaging> 11 12 <name>sms</name> 13 <description>短信api</description> 14 15 <parent> 16 <groupId>org.springframework.boot</groupId> 17 <artifactId>spring-boot-starter-parent</artifactId> 18 <version>2.0.3.RELEASE</version> 19 <relativePath/> <!-- lookup parent from repository --> 20 </parent> 21 22 <properties> 23 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 24 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 25 <java.version>1.8</java.version> 26 </properties> 27 28 <dependencies> 29 <dependency> 30 <groupId>org.springframework.boot</groupId> 31 <artifactId>spring-boot-starter-web</artifactId> 32 </dependency> 33 34 <dependency> 35 <groupId>org.projectlombok</groupId> 36 <artifactId>lombok</artifactId> 37 <optional>true</optional> 38 </dependency> 39 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> 40 <dependency> 41 <groupId>com.alibaba</groupId> 42 <artifactId>fastjson</artifactId> 43 <version>1.2.47</version> 44 </dependency> 45 <!--springfox的核心jar包--> 46 <dependency> 47 <groupId>io.springfox</groupId> 48 <artifactId>springfox-swagger2</artifactId> 49 <version>2.7.0</version> 50 </dependency> 51 <!--springfox-ui的jar包(里面包含了swagger的界面静态文件)--> 52 <dependency> 53 <groupId>io.springfox</groupId> 54 <artifactId>springfox-swagger-ui</artifactId> 55 <version>2.7.0</version> 56 </dependency> 57 58 </dependencies> 59 60 <build> 61 <plugins> 62 <plugin> 63 <groupId>org.springframework.boot</groupId> 64 <artifactId>spring-boot-maven-plugin</artifactId> 65 </plugin> 66 <plugin> 67 <groupId>io.fabric8</groupId> 68 <artifactId>docker-maven-plugin</artifactId> 69 <version>0.30.0</version> 70 <configuration> 71 <dockerHost>http://192.168.80.16:2375</dockerHost> 72 <images> 73 <image> 74 <name>${project.name}</name> 75 <alias>${project.name}</alias> 76 <build> 77 <dockerFileDir>${project.basedir}/src/main/docker/</dockerFileDir> 78 <assembly> 79 <descriptorRef>artifact</descriptorRef> 80 </assembly> 81 <tags> 82 <tag>latest</tag> 83 </tags> 84 </build> 85 <run> 86 <!--数据卷,挂在文件的地址,例如输出项目日志--> 87 <volumes> 88 <bind> 89 <volume>/root/sms:/sms</volume> 90 </bind> 91 </volumes> 92 <namingStrategy>alias</namingStrategy> 93 <!--端口映射--> 94 <ports> 95 <port>0.0.0.0:8088:8088</port> 96 </ports> 97 <restartPolicy> 98 <name>always</name> 99 </restartPolicy> 100 </run> 101 </image> 102 </images> 103 </configuration> 104 </plugin> 105 </plugins> 106 </build> 107</project>
最后敲下如下命令
mvn clean package docker:stop docker:remove docker:build -DskipTests docker:run