221 字
1 分钟
使用docker部署SpringBoot应用
项目环境
- Spring Boot 2.3.0.RELEASE
- Java 8
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>springboot-dockerfile-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-dockerfile-demo</name> <description>Demo project for Spring Boot</description>
<properties> <java.version>1.8</java.version> </properties>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <layers> <enabled>true</enabled> </layers> </configuration> </plugin> </plugins> </build>
</project>Controller
package org.example.springbootdockerfiledemo.controller;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;
@RestControllerpublic class TestController {
@RequestMapping("/") public String index() { return "Hello World!"; }
}dockerfile
FROM eclipse-temurin:8-jdk AS builderWORKDIR appARG JAR_FILE=target/*.jarCOPY ${JAR_FILE} app.jarRUN java -Djarmode=layertools -jar app.jar extract
FROM eclipse-temurin:8-jreWORKDIR appCOPY --from=builder app/dependencies/ ./COPY --from=builder app/spring-boot-loader/ ./COPY --from=builder app/snapshot-dependencies/ ./COPY --from=builder app/application/ ./
ENV TZ=Asia/ShanghaiVOLUME ["/tmp", "/app/log"]EXPOSE 8080
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]构建镜像
mvn clean install -Dmaven.test.skip=truedocker build -t springboot-dockerfile-demo:latest .编写 docker-compose.yml 文件
version: '3'
services: springboot-dockerfile-demo: container_name: springboot-dockerfile-demo image: springboot-dockerfile-demo:latest restart: always ports: - "8080:8080" environment: TZ: Asia/Shanghai volumes: - "./log:/app/log" # 日志目录启动容器
docker compose up -d运行后查看启动容器的情况
docker psdocker compose logs测试
浏览器访问 http://localhost:8080
使用docker部署SpringBoot应用
https://blog.dongge.de/20200616211803/ 
