系统环境
IDE: IDEA 2020.2
Linux: WSL2 Ubuntu 20.04
Docker: 20.10.8
参考资料
1. 配置 SpringBoot 项目
1.1 创建 SpringBoot 项目
使用 Spring Initializr
创建Spring Boot项目作为演示。
示例代码: pom.xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
com.bpf
spring-boot-web
0.0.1
spring-boot-web
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
示例代码: HelloController.java
package com.bpf.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Web!";
}
}
1.2 maven 打包
在与 pom.xml
文件同路径下进行打包。打包后生成的jar包会保存在 target
目录下。
mvn clean package -DskipTests
-DskipTests
表示跳过测试程序。
1.3 docker 打包
- 创建 docker文件夹
mkdir docker
cd docker
- 将jar包复制过来
cp ../target/*.jar .
- 创建 Dockerfile
touch spring_dockerfile
spring_dockerfile 内容
FROM openjdk:8u312-slim-buster
COPY *.jar /app.jar
EXPOSE 8080
ENTRYPOINT java -jar /app.jar
- 创建镜像
docker build -f spring_dockerfile -t spring-web .
- 运行容器
docker run -d --name springweb -p 8081:8080 spring-web
2. 配置 JavaWeb 项目
2.1 创建 JavaWeb 项目
注意点
Docker打包部署JavaWeb项目时,需要在 pom.xml
中通过 webXml标签指定 web.xml
的位置;同时需要通过 resources标签告知maven打包时要将xml配置文件包括进去。
示例代码: pom.xml
4.0.0
org.bpf
javaweb
0.0.1
war
org.springframework
spring-webmvc
4.0.0.RELEASE
src/main/resources
*.xml
org.apache.maven.plugins
maven-war-plugin
2.2
web/WEB-INF/web.xml
示例代码: web.xml
contextConfigLocation
classpath:spring.xml
org.springframework.web.context.ContextLoaderListener
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
dispatcherServlet
/
示例代码: spring.xml
示例代码: springmvc.xml
示例代码: HelloController.java
package com.bpf.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello() {
System.out.println("访问了 /hello");
return "Hello, JavaWeb.";
}
}
2.2 maven 打包
在与 pom.xml
文件同路径下进行打包。打包后生成的war包会保存在 target
目录下。
mvn clean package -DskipTests
2.3 docker 打包
- 创建 docker文件夹
mkdir docker
cd docker
- 将war包复制过来
cp ../target/*.war .
- 创建 Dockerfile
touch javaweb_dockerfile
javaweb_dockerfile 内容
FROM tomcat:8.5-jdk8
ADD *.war /usr/local/tomcat/webapps/javaweb.war
EXPOSE 8080
ENTRYPOINT catalina.sh run
- 创建镜像
docker build -f javaweb_dockerfile -t java-web .
- 运行容器
docker run -d --name javaweb -p 8082:8080 java-web
Original: https://www.cnblogs.com/bpf-1024/p/15449741.html
Author: 步平凡
Title: Docker 打包部署web项目 [Dockerfile方式]
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/683813/
转载文章受原作者版权保护。转载请注明原作者出处!