springboot整合docker部署
环境安装
首先,需要安装Docker(例如:docker for windows)
下载地址:https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe
安装运行起来之后,配置一下阿里云境像,在屏幕右下角,找到"小鲸鱼"
右击小鲸鱼->settings->Daemon 如下图,设置镜像地址:
https://6w4lyiz2.mirror.aliyuncs.com
重启大概需要30秒
springboot代码
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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.river</groupId> <artifactId>springboot-docker</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-docker</name> <description>Demo project for Spring Boot</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!--properties节点中设置docker镜像的前缀“springboot”--> <docker.image.prefix>springio</docker.image.prefix> <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> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>2.1.5.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- tag::plugin[] --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- end::plugin[] --> </plugins> <!--<finalName>gs-spring-boot-docker-master</finalName>--> </build> </project>
2、程序
package com.river.springbootdocker; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class SpringbootDockerApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDockerApplication.class, args); } @RequestMapping("/") public String home() { return "Hello Docker World"; } }
3、程序端口设置为 :
server.port=8010
这时可以编译或运行程序
4、在程序根目录下创建Dockerfile文件
FROM frolvlad/alpine-oraclejdk8:slim
MAINTAINER 20207075@qq.com
VOLUME /tmp
ADD ./target/springboot-docker-0.0.1-SNAPSHOT.jar springboot-docker.jar
RUN sh -c 'touch /springboot-docker.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /springboot-docker.jar" ]
配置文件解释:
VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
项目的 jar 文件作为 “app.jar” 添加到容器的
ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source
docker部署
在当前文件夹下打开cmd命令,执行如下语名构建镜像:
docker build -t hello-docker .
输出如下信息,就表示镜像构建成功了
此时,我们可以通过命令查看镜像:
docker images
接着,启动容器
docker run -d -p 8030:8010 hello-docker
在浏览器中输入:
http://localhost:8030/
我们可以看到: