使用IDEA创建Docker镜像,Docker容器,并发布项目

回顾

  这里用到的知识,在之前的文章中就有提及,所以说不明白的地方可以看这里:

  由于这一篇文章中涉及到项目的发布,而这里所发布的项目采用的是之前文章中提及的注册中心Eureka,因而不清楚的可以看这里:

Docker相关文件及目录

目录结构

在这里插入图片描述

与Docker相关的部分源码

  由于这里项目的源码在之前的文章Spring Cloud与微服务之注册中心Eureka中都有,所以说这里就单单上传一下与Docker相关的源码。

  而这里,即便是与Docker相关的源码,其都在使用Dockerfile创建Docker镜像中有提及,而这里之所以再次罗列出来,仅仅是其中只有少数的不同之处,这里就索性都写出来了。

  app-entrypoint.sh源码:

#!/bin/bash
#上面是固定的开头
# 命令行运行项目jar包指令
java -jar /spring-cloud/springcloud-eureka.jar

  
  

  Dockerfile源码:

#镜像出处
FROM java:8
#维护者信息
MAINTAINER zzy
#镜像操作指令
#在容器的根目录中创建spring-cloud文件夹
RUN mkdir -p /spring-cloud
#将本地项目jar包拷贝到Docker容器中的位置
COPY ./springcloud-eureka.jar /spring-cloud/springcloud-eureka.jar
#将本地的可执行文件拷贝到Docker容器中的根目录下
COPY ./app-entrypoint.sh /
#给app-entrypoint.sh赋予可执行权限
RUN chmod +x /app-entrypoint.sh
#对外暴漏的端口号
EXPOSE 6868
#开机启动
ENTRYPOINT ["/app-entrypoint.sh"]

  
  

编辑IDEA项目配置文件

拉取镜像

  这里的镜像采用的是java:8,所以说需要我们优先拉取该镜像。

在这里插入图片描述

配置Docker镜像与容器

   在IDEA顶部的菜单栏中找到图示的Edit Configurations选项,点击打开配置面板:

在这里插入图片描述

   点击上面的+并依次点击Docker->Dockerfile

在这里插入图片描述

   然后在打开的配置面板中进行如下配置:

在这里插入图片描述

   Name:命名为eureka,它指的是该项配置文件将被命名为eureka

   Dockerfile指的是Dockerfile文件的文件路径,这里通过手选就可以了,我这里的路径如下:

springcloud-eureka\docker-dir\Dockerfile

  
  

   Image tag:指的是将项目jar包打成镜像后,该镜像的名称以及tag标签,我的如下:

springcloud-eureka:1.0

  
  

  Container name:指的是项目容器在加载打成的Docker镜像后,其容器的名称,由于容器就是运行着的项目,也就是说是我们的eureka服务,因此这里将容器的名称命名为:

eureka-server

  
  

  Command:这里指的是在容器运行时加载的其它指令,这里的指令为:

-t       (--tty=false 分配tty设备,该可以支持终端登录)

  
  

  Bind ports:这里指的是绑定的容器与本机的端口号,在端口号指定方面,我们应该尽量与项目中的配置文件的端口号保持一致,也即是6868

  端口号的绑定也很简单,就是如下:

在这里插入图片描述

  在绑定端口号后,我们的项目就已经成功的配置好了Docker,表面上我们是在配置Docker,实际上我们是在拼接Docker的相关命令行语句,该语句在点击Command preview后即可查看,如下:

docker build -t springcloud-eureka:1.0 .
&& docker run
-p 6868:6868
--name eureka-server
springcloud-eureka:1.0 -t

  
  

  上面的语句和我们之前在使用Dockerfile创建Docker镜像的文章中所提到的语句其实是一样的。

  当我们点击ApplyOK按钮后,Docker配置完成。

启动并访问项目

启动项目

  启动Docker时,直接点击图示的运行图标。

在这里插入图片描述

  springcloud-eureka项目将被自动打成Docker镜像,然后自动创建并启动Docker容器加载该创建的Docker镜像,其结果如下图所示:

在这里插入图片描述

  在上面的截图中,我们可以清楚的看到新创建的docker镜像springcloud-eureka:1.0与容器eureka-server,同时我们还看到,在Log控制台中打印出了当前的项目启动日志。

访问项目

  由于容器中的项目已经被启动起来了,因而我们可以在浏览器中直接访问项目。

  此时我们访问的项目路径不是下面的地址:

http://localhost:6868/

  
  

  因而此时的Docker分配的ip地址并不是本机的ip地址,而是

192.168.99.100

  
  

  自然,在浏览器中访问的IP地址应该如下:

http://192.168.99.100:6868/

  
  

  访问之后的结果如下:

在这里插入图片描述

  其登录后的主界面如下;

在这里插入图片描述

  至此,我们在IDEA中配置的Docker已经运行成功。

注意问题

文件类型错误

  有时我们启动时会出现下面异常:

standard_init_linux.go:190: exec user process caused "no such file or directory"

  
  

  此时是由于我们创建的app-entrypoint.sh可执行文件是在Windows中所创建的,其在创建时就被添加了一些Windows格式,因而该问题的解决办法是直接在Linux中创建,然后手动导出。

不能直接将jar包位置指定为target目录

  如果是细心的话,我们会发现,在Dockerfile中存在下面的语句:

COPY ./springcloud-eureka.jar /spring-cloud/springcloud-eureka.jar

  
  

  而如果我们将其改成下面的语句时,似乎是更简化了:

COPY ../target/springcloud-eureka.jar /spring-cloud/springcloud-eureka.jar

  
  

  这样我们不用再将项目的jar包拷贝到docker-dir目录中,直接在target目录中指定就可以了,这样看似是可以的,但是实际上却不行,因而COPY的行为不能发生在target目录中。

  所以此时会出现如下异常:

Step 4/8 : COPY ../target/springcloud-eureka.jar /spring-cloud/springcloud-eureka.jar

Error: ResponseItem.ErrorDetail[code=<null>,message=COPY failed: Forbidden path outside the build context: …/target/springcloud-eureka.jar ()]
Failed to deploy ‘eureka-server Dockerfile: springcloud-eureka/docker-dir/Dockerfile’: COPY failed: Forbidden path outside the build context: …/target/springcloud-eureka.jar ()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值