`
hbxflihua
  • 浏览: 676194 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用docker部署spring-boot多模块依赖工程

阅读更多

项目架构

dw

|

|----dw-demo(接口demo)

|

|----dw-core(代码核心)

|

|----dw-api(接口,依赖dw-core)

|

|----dw-manage(后台,依赖dw-core)

 

一、准备工作

首先看下各模块pom文件

1、项目父工程POM

 

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.rd</groupId>
	<artifactId>dw</artifactId>
	<version>2.0.0</version>
	<packaging>pom</packaging>

	<modules>
        <module>dw-core</module> <!--核心业务 -->
        <module>dw-manage</module><!-- 后台 -->
        <module>dw-api</module><!-- API -->
        <module>dw-demo</module><!-- demo -->
    </modules>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	
</project>

 

 

2、dw-core的POM

 

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dw-core</artifactId>
    <packaging>jar</packaging>

	<parent>
		<groupId>com.rd</groupId>
		<artifactId>dw</artifactId>
		<version>2.0.0</version>
		<relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
	</parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <relativePath/>
    </properties>

    <dependencies>
        ......
    </dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<classifier>exec</classifier>
				</configuration>
			</plugin>			
		</plugins>
	</build>

</project>

 

 

3、dw-demo的pom文件

 

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<artifactId>dw-demo</artifactId>
	<packaging>jar</packaging>

	<parent>
		<groupId>com.rd</groupId>
		<artifactId>dw</artifactId>
		<version>2.0.0</version>
		<relativePath>../pom.xml</relativePath> 
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		......
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<executable>true</executable>
				</configuration>
			</plugin>
			
			<!-- Docker maven plugin -->
	        <plugin>
	            <groupId>com.spotify</groupId>
	            <artifactId>docker-maven-plugin</artifactId>
	            <version>1.0.0</version>
	            <configuration>
	                <imageName>${project.groupId}/${project.artifactId}:${project.version}</imageName>
	                <dockerDirectory>src/main/resources/docker</dockerDirectory>
	                <resources>
	                    <resource>
	                        <targetPath>/</targetPath>
	                        <directory>${project.build.directory}</directory>
	                        <include>${project.build.finalName}.jar</include>
	                    </resource>
	                </resources>
	            </configuration>
	        </plugin>
	        <!-- Docker maven plugin -->
	        
		</plugins>
	</build>
	
</project>

 

 

 4、dw-api和dw-manage的pom和dw-demo类似,这里就不展示了

 

二、创建Dockerfile文件

在dw-demo、dw-api、dw-manage三个模块的sr/main/resources/docker下分别创建Dockerfile文件,Dockerfile 文件用来说明如何来构建镜像。这里以dw-demo为例来说明,文件内容如下:

 

# 指定基础镜像
FROM hub.c.163.com/library/java
# 指定作者名和E-mail
MAINTAINER lihua "lh@erongdu.com"

#指定挂载点
VOLUME /tmp
#将本地文件或目录复制到由dockerfile构建的镜像中
ADD dw-demo-2.0.0.jar demo.jar
#设置环境变量
#ENV JAVA_OPTS=""
#提供容器运行的默认命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar", "/demo.jar"]

 

 

三、构建打包环境

在服务器上安装jdk、maven 、docker、svn,具体参考如下链接,这里不做赘述。

ubuntu16.04搭建jdk1.8运行环境

ubuntu16.04安装maven

Ubuntu16.04安装Docker

Ubuntu SVN客户端安装

 

四、docker部署spring-boot工程

1、进入父工程pom文件所在目录,打包编译,将依赖包放至本地仓库

mvn clean install package -Dmaven.test.skip

 

 

 2、进入各模块,使用 DockerFile 构建镜像

cd dw-demo
mvn package docker:build -Dmaven.test.skip

 

 

3、运行该镜像

docker run -p 9882:8082 -t com.rd/dw-demo:2.0.0

 

 

五、查看服务

 

  • 大小: 3.9 KB
分享到:
评论

相关推荐

    spring-boot-reference中文版

    这个"spring-boot-reference中文版"是Spring Boot官方用户指南的中文翻译版,旨在帮助中国开发者更好地理解和使用Spring Boot。 Spring Boot的核心特性包括自动配置、起步依赖、内嵌Web服务器(如Tomcat或Jetty)...

    spring-boot-mmanyexamples.zip

    这在"spring-boot-mmanyexamples"中,可能有多个示例展示了如何配置和使用这些内嵌服务器。 4. **健康检查与Actuator** Actuator是Spring Boot提供的一个模块,用于监控和管理应用程序。它提供了健康检查、审计、...

    Spring-Boot-demo

    该项目是Spring Boot的一个实战示例,包含多个模块,展示了Spring Boot如何构建实际应用。我们主要关注以下几个关键部分: 1. 配置文件:`application.properties`或`application.yml`,用于定义应用的环境变量和...

    spring-boot-plus-master.zip

    Spring-Boot-Plus是一个专为简化Web应用开发而设计的高效、功能丰富的开源脚手架,基于Spring Boot。它旨在帮助开发者快速构建后台管理系统,节省时间和精力,提高开发效率。这个压缩包“spring-boot-plus-master....

    spring-boot-1.3.6.RELEASE.zip

    Spring Boot应用可打包为单一的jar文件,易于Docker化,结合Jenkins等工具,实现持续集成和持续部署。 9. **社区支持与更新** Spring Boot 1.3.6.RELEASE虽然已不是最新版本,但其社区活跃,文档齐全,仍有许多...

    spring-boot-3.0.6.tar.gz

    1. **解压文件**:使用 `tar -zxvf spring-boot-3.0.6.tar.gz` 命令解压。 2. **进入解压后的目录**:`cd spring-boot-3.0.6`。 3. **运行应用**:如果是可执行 JAR,运行 `java -jar spring-boot-3.0.6.jar`;如果...

    spring-boot-1.2.0.RELEASE.zip

    - Spring Boot的后续版本带来了更多改进和新特性,如1.5.x增加了对Java 9的支持,2.x版本则引入了Spring Cloud Gateway、WebFlux等现代技术。 7. **社区支持与学习资源** - 官方文档:详尽的官方文档是学习Spring...

    spring-boot-2.0.0.M1

    5. **云原生支持**:Spring Boot与Docker、Kubernetes等云平台的良好集成,使得应用更容易部署到云端。 四、如何使用Spring Boot 2.0.0.M1 下载并解压"spring-boot-2.0.0.M1"压缩包,你可以找到项目的基础结构和...

    spring-boot-2.6.8.zip

    8. **Docker 集成**:Spring Boot 可以很容易地与 Docker 结合,方便容器化部署。 9. **微服务架构**:Spring Boot 与 Spring Cloud 结合,可以构建分布式系统,实现服务发现、配置中心、负载均衡等功能。 10. **...

    spring-boot-docs-1.5.18.RELEASE

    API文档通常包含了Spring Boot核心库和相关模块的Javadoc。通过这些API,开发者可以了解各种类、接口和方法的用途,以及它们如何相互协作来实现特定功能。例如,`SpringApplication`类用于启动Spring Boot应用,`@...

    spring-boot-1.2.1.RELEASE.zip

    通过在 Maven 或 Gradle 构建脚本中引入特定的起步依赖,可以自动配置相应的 Spring 组件和第三方库,例如 `spring-boot-starter-web` 用于创建Web应用,`spring-boot-starter-data-jpa` 用于数据库操作等。...

    spring-boot reference

    这些起步依赖是 Maven 或 Gradle 的模块,包含了构建 Spring 应用所需的一组相关依赖。 - **自动配置(Auto Configuration)**:Spring Boot 会根据项目中引入的依赖自动配置相应的 Bean。例如,如果你引入了 `...

    spring-boot-1.0.0.RELEASE.tar.gz

    9. **Docker 支持**:由于 Spring Boot 应用通常打包为单个可执行 JAR,这使其非常适合 Docker 容器化,可以轻松地在 Docker 平台上部署和扩展。 10. **社区支持**:Spring 社区庞大且活跃,提供了丰富的教程、文档...

    spring-boot-1.5.19.RELEASE.zip

    通过Docker容器化,开发者可以轻松地将Spring Boot应用部署到云端。 九、持续集成与部署 Spring Boot 1.5.19.RELEASE支持常见的持续集成工具,如Jenkins、Travis CI等,方便自动化构建与测试。其构建产出的可执行...

    Spring-Boot-Game是基于SpringBoot+SpringCloud的开发系统

    7. Docker容器化:使用Docker和Docker Compose将服务打包成容器,便于部署和扩缩容。 8. CI/CD:Jenkins或GitLab CI/CD实现持续集成和持续部署,提升开发效率。 通过Spring Boot Game,我们可以学习到如何利用...

    spring-boot学习文档

    3. **Spring Boot与云服务**:讨论Spring Boot如何与Docker、Kubernetes等云平台集成,实现容器化部署。 4. **安全**:介绍Spring Security,如何配置认证和授权,以及OAuth2的集成。 5. **测试**:涵盖单元测试和...

    marvinYuan-spring-boot-pay-master.zip

    在这个项目中,Spring Boot作为核心框架,负责应用的启动、依赖管理和微服务治理。 二、支付系统设计 支付系统通常包括订单管理、支付渠道管理、交易状态同步、退款处理等多个模块。在这个项目中,开发者将这些功能...

    spring-boot-spring-loaded:使用 Spring Loaded 和 Spring Boot 的示例

    对于持续集成和部署,Spring Boot 支持 JUnit 和 Spring Boot Test 来编写测试用例,以及使用 Docker 容器化应用。 在 `spring-boot-spring-loaded-master` 项目中,我们可以期待找到关于如何集成和使用这两个工具...

    52itstyle-spring-boot-seckill-master.zip_52itstyle_bornpen_secki

    Spring Boot以“开箱即用”为理念,内置了Tomcat服务器,自动配置了许多Spring模块,使得开发者可以快速构建微服务或单体应用。秒杀系统(seckill)通常涉及到高并发场景下的商品限量抢购,因此对系统的性能、响应...

    spring-boot-seckill-master.zip

    1. **Spring Boot**:理解Spring Boot的核心特性,如自动配置、起步依赖、内嵌Web服务器等,以及如何利用它快速搭建微服务。 2. **分布式架构**:了解分布式系统的基本概念,包括负载均衡、服务发现、通信协议(如...

Global site tag (gtag.js) - Google Analytics