Spring Boot(Maven)+Docker打包
本文可以实现:将Spring Boot项目从GitHub clone到服务器上后,一条命令直接完成依赖下载-编译-镜像生成-容器运行。
注意:本文Spring Boot项目为单机部署,即只在一台服务器进行部署,并使用Maven构建项目,通过公网IP访问数据库。
前提
Spring Boot项目已可使用Maven打包为jar文件,并可通过java -jar example-0.0.1-SNAPSHOT.jar启动此文件。
必须安装Docker,Docker Compose。
操作
第一步:在项目根目录下创建文件Dockerfile,内容如下,本文项目使用的是jdk11,开放8086端口。注意:需要将下文的两处
example-0.0.1-SNAPSHOT
改为你的项目的名字。dockerfileFROM maven:3.8.3-openjdk-11 AS MAVEN_BUILD COPY settings.xml /usr/share/maven/conf/settings.xml COPY pom.xml /build/ COPY src /build/src/ WORKDIR /build/ RUN mvn package FROM maslick/minimalka:jdk11 COPY --from=MAVEN_BUILD /build/target/example-0.0.1-SNAPSHOT.jar /app/ EXPOSE 8086 ENTRYPOINT ["java","-jar","/app/example-0.0.1-SNAPSHOT.jar"]
第二步:在项目根目录下创建文件settings.xml,目的是为了替换掉Maven官方源,使用国内源,文件内容如下:
xml<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/> <interactiveMode/> <usePluginRegistry/> <offline/> <pluginGroups/> <servers/> <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/central</url> </mirror> <mirror> <id>repo1</id> <mirrorOf>central</mirrorOf> <name>central repo</name> <url>http://repo1.maven.org/maven2/</url> </mirror> <mirror> <id>aliyunmaven</id> <mirrorOf>apache snapshots</mirrorOf> <name>阿里云阿帕奇仓库</name> <url>https://maven.aliyun.com/repository/apache-snapshots</url> </mirror> </mirrors> <proxies/> <activeProfiles/> <profiles> <profile> <repositories> <repository> <id>aliyunmaven</id> <name>aliyunmaven</name> <url>https://maven.aliyun.com/repository/public</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>MavenCentral</id> <url>http://repo1.maven.org/maven2/</url> </repository> <repository> <id>aliyunmavenApache</id> <url>https://maven.aliyun.com/repository/apache-snapshots</url> </repository> </repositories> </profile> </profiles> </settings>
- 第三步:在项目根目录下创建文件docker-compose.yml,内容如下:
ymlversion: '3' services: web: build: . ports: - "8086:8086"
此时内容已经填充完毕,可以将项目推送至GitHub,下面一条命令直接从源代码部署运行。
- 第四步:部署运行。
在项目根目录下,执行如下命令,
shelldocker-compose up
如果你想在后台执行该服务可以加上 -d 参数:
shelldocker-compose up -d
等待项目构建运行即可!
最后
项目构建运行完成之后,通过docker images
会发现除了多出了一个我们刚构建的项目镜像之外,额外多了两个镜像maven:3.8.3-openjdk-11
和minimalka:jdk11
,这是构建我们自己的镜像时必须要用的基础镜像,如果以后还需要再此构建项目,可以将这两个镜像保留,否则可以将其删除。
如果项目要连接数据库,可以使用公网IP进行连接,下文将Springboot与Mysql进行了部署。