springboot结合Docker部署

工程目录

  • 创建Dockerfile

FROM java
VOLUME /tmp
ADD springboot-docker-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

FROM java:指Docker Hub上官方提供的java镜像,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用。

VOLUME /tmp:创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录。

ADD docker-springboot-0.0.1-SNAPSHOT.jar app.jar:将应用jar包复制到/app.jar

ENTRYPOINT:表示容器运行后默认执行的命令

  • pom.xml文件引入docker插件

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>

			<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.14</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的位置

dockerHost:指定Docker远程API地址

resources:指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用jar包需要纳入

  • 用maven 进行打包并将镜像发布到docker中

mvn package docker:build
  • 查看docker镜像

$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
springboot/springboot-docker   latest              3d62f6903a78        20 minutes ago      676MB
redis                          latest              55cb7014c24f        3 months ago        83.4MB
nginx                          latest              cd5239a0906a        3 months ago        109MB
rabbitmq                       3.7.3-management    2f415b0e9a6e        7 months ago        151MB
java                           latest              d23bdf5b1b1b        20 months ago       643MB

其中 springboot/springboot-docker 是刚才构建的镜像。现在可以为该镜像启动一个容器了。

  • 启动容器

docker run -p 8080:8080 springboot/springboot-docker

浏览器打开localhost:8080即可看见页面


遇到问题:

进行mvn package docker:build时报错

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.14:build (default-cli) on project springboot-docker: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect -> [Help 1]

解决办法:

posted @ 2018-09-20 11:23  21Java  阅读(245)  评论(0编辑  收藏  举报