参考文章:https://www.tianmaying.com/tutorial/spring-boot-docker
http://tianmaying.com/tutorial/spring-boot-docker/repo
注:记录只是为了让自己找起来更加方便
本文主要实现通过maven配置来完成Docker的构建
主要包括以下:
1.Dockerfile作用:用来构建镜像
参考如下
FROM java:8
VOLUME /tmp
ADD spring-boot-docker-0.1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
说明:
java:8是指Docker Hub上官方提供的java镜像
VOLUME /tmp创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
ADD spring-boot-docker-0.1.0.jar app.jar 将应用jar包复制到/app.jar
ENTRYPOINT表示容器运行后默认执行的命令
构建命令:
docker build -t tmy/spring-boot-app .
运行Docker容器命令:
docker run -d -p 8080:8080 --name sample-app tmy/spring-boot-app
2.使用maven创建镜像的配置文件POM
<properties>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.2.3</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>
imageName指定了镜像的名字
dockerDirectory指定Dockerfile的位置
resources是指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用jar包需要纳入
命令:
mvn package docker:build
对应的工程目录如下: