Docker部署springBoot项目
1、在pom.xml的properties中添加Docker镜像名称,如下所示
<properties>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
2、在pom.xml的plugins添加构建Docker插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven 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>
</plugins>
</build>
3、在src/main/docker目录下创建Dockerfile文件
FROM java:8
EXPOSE 8080
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
说明:
FROM 表示要构建的镜像基于哪个镜像,java:8表示使用jdk8环境为基础镜像
EXPOSE 告诉Docker这个容器在运行时会监听哪些端口。
VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
ADD 表示把文件拷入docker ,并改名成 app.jar
ENTRYPOINT 表示使用指定命令在镜像运行时执行,启动jar。
4、构建镜像
mvn clean package docker:build
5、查看构建好的镜像
docker images