spring boot2.0部署docker简单教程linux部署
docker容器化逐渐流行,加上已经流行的spring boot2.0。那么两者如何结合一起呢?
首先为了偷懒,直接从https://start.spring.io/上面拉去一个spring boot2.0项目
可以看到, 官网的spring boot 版本 已经到了2.0.6.生成后,download下来导入我们的ide中。
然后,我们写一个简单的requestMapping
返回 “Hello Docker World”!写这个为了验证该项目部署到docker后 是否正常
接着在application.propertise或者application,yml中修改端口号为8090。因为8080实在用的太多啦!
重点来了 。在pom.xml中添加
<docker.image.prefix>hellospringbootdocker</docker.image.prefix>
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> </configuration> </plugin>
以及
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>unpack</id> <phase>package</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement>
上面那段maven中的配置是参考了官网中的说明:To ensure the jar is unpacked before the docker image is created we add some configuration for the dependency plugin。机翻就是:为确保在创建docker镜像之前解压缩jar,我们为依赖项插件添加一些配置。
然后是Dockerfile,该文件可以新建一个File,然后修改名字,并放到项目的根目录底下。内容是
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/hello-springboot-docker-0.1.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
hello-springboot-docker-0.1.0.jar就是我们的项目。这个项目JAR文件作为“app.jar”添加到容器中,然后在ENTRYPOINT中执行。
这里添加了一个指向“/ tmp”的VOLUME,因为这是Spring Boot应用程序默认为Tomcat创建工作目录的地方。效果是在服务器“/ var / lib / docker”下创建一个临时文件,并将其链接到“/ tmp”下的容器。
先来验证下项目是否正常,进入项目的目录。输入命令
./mvnw package && java -jar target/hello-springboot-docker-0.1.0.jar
如果输入localhost:8090输出了“Hello Docker World”!。那么可以继续。并且这个jar已经生成了
然后输入命令./mvnw install dockerfile:build。如果出现builde success那么就成功啦!
然后用docker images看镜像是否存在。存在则
docker run -p 8090:8090 -t hellospringbootdocker/hello-springboot-docker 运行该镜像。验证下看看!!