通过docker部署springboot项目

在docker上部署springboot项目

docker中添加maven 和 jdk的镜像,可以直接用这个:

docker pull hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8 

在springboot项目的pom文件中添加docker插件,以及在项目中添加Dockerfile,Dockerfile相当于说明书,告诉docker容器应该如何运行项目,规定项目运行的一些规则。

项目结构

在pom文件中添加插件

   <properties>
   ​        <docker.image.prefix>springboot</docker.image.prefix>
   </properties>
   ​<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>

src/main/docker目录下创建Dockerfile文件 ,Dockerfile:

FROM hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8
EXPOSE 58761
VOLUME /tmp
ADD witnesssign-eureka.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。
     

ide中通过命令行,cd到项目结构下,构建镜像:mvn clean package docker:build

执行完上面命令后,会在target文件下生成:

执行完成后直接在终端执行命令:docker images,就可以看到刚刚生成的springboot项目的镜像

最后启动镜像,外部通过访问58761端口来访问

docker run -d -p 58761:8761 -t springboot/witnesssign-eureka

查看当前容器启动情况:docker ps -a ,就可以看到刚才的项目已经启动了.

接下来,访问一下地址,就成功啦!

ps: 执行生成镜像的命令时,可能会报这个错误:

Failed to execute goal com.spotify:docker-maven-plugin:0.4.14:build (default-cli) on project witnessSign-gateway: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException: Cannot retry request with a non-repeatable request entity: Broken pipe -> [Help 1]

错误原因:

由于docker maven 插件的限制,docker项目的artifactId不能包含有大写字母

解决办法

将maven项目的artifactId改成纯小写(可包含字母和下划线的形式)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值