Win10安装docker,部署springboot项目到docker上

Win10安装docker,部署springboot项目到docker上

参考:

1、Windows Docker 安装
2、win10安装k8s
3、k8s通过docker desktop启动并且基于docker部署springboot项目
4、KUBERNETES部署-基于DOCKER DESKTOP

一、安装dcoker desktop

Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows
在这里插入图片描述
安装并开启 Hyper-V
右键WINDOWS快速启动栏 -> 应用和功能 -> 程序和功能 -> 启用或关闭Windows功能 -> 选中Hyper-V
安装Docker Desktop
双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。
安装之后,可以打开 PowerShell 并运行以下命令检测是否运行成功:
docker run hello-world
在这里插入图片描述
修改设置
在这里插入图片描述
红框框中的镜像位置默认指向系统盘,最好改一下。
在这里插入图片描述
{
“debug”: true,
“experimental”: true,
“registry-mirrors”: [
“https://docker.mirrors.ustc.edu.cn”
]
}
注册并登陆
docker上sign in
还需要使用dos命名登陆,登陆成功之后C:\Users\用户.docker\config.json内容会修正,不然后续docker打包会报错
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build (default-cli) on project mh-provider-gateway: Exception caught: com.spotify.docker.client.shaded.com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.spotify.docker.client.messages.RegistryAuth: no String-argument constructor/factory method to deserialize from String value (‘desktop’)
[ERROR] at [Source: N/A; line: -1, column: -1] (through reference chain: java.util.LinkedHashMap[“credsStore”])

在这里插入图片描述
登陆成功之后,config.json文件会增加"auths"参数:
在这里插入图片描述

二、安装k8s

下载k8shttps://codechina.csdn.net/mirrors/AliyunContainerService/k8s-for-docker-desktop/-/tree/v1.19.7
根据安装的docker desktop上k8s对应的版本下载
在这里插入图片描述
解压并执行load_images.ps1
解压并以管理员身份运行Windows PowerShell
进入k8s解压后的目录:D:\k8s-for-docker-desktop-v1.19.7
执行:.\load_images.ps1
*说明:
如果因为安全策略无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。输入Y并回车。
如果还是提示权限问题,请右键load_images.ps1等文件进入属性控制,勾选解除锁定并应用。(.\load_images.ps1 : 无法加载文件 D:\k8s-for-docker-desktop-v1.19.7\load_images.ps1。未对文件 D:\k8s-for-docker-desktop-v1.19.7\load_images.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1

  • .\load_images.ps1
  •   + CategoryInfo          : SecurityError: (:) [],PSSecurityException
      + FullyQualifiedErrorId : UnauthorizedAccess
    

)
如果需要,可以通过修改 images.properties 文件自行加载你自己需要的镜像
*
在这里插入图片描述
配置 k8s:
kubectl config use-context docker-desktop
在这里插入图片描述
验证状态:
kubectl cluster-info
kubectl get nodes
在这里插入图片描述
配置控制台:
进入k8s文件所在目录然后执行
kubectl create -f kubernetes-dashboard.yaml
在这里插入图片描述
检查应用状态:
kubectl get pod -n kubernetes-dashboard
在这里插入图片描述
开启访问代理
kubectl proxy
在这里插入图片描述
访问本地链接http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
在这里插入图片描述
打开C:\Users\UserName.kube中的Config文件,找到其中的Token,从令牌进入即可。
在这里插入图片描述
备注:查看镜像命令:docker images
在这里插入图片描述

三、springboot项目部署到docker

请先在springboot项目未部署到docker之前让其启动成功。
新增Dockerfile文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

COPY 中最后的app.jar需要和ENTRYPOINT最后的/app.jar名称保持一致,可改成其他的名称
修改pom.xml,增加docker配置

   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
           <plugin>
               <groupId>com.spotify</groupId>
               <artifactId>dockerfile-maven-plugin</artifactId>
               <version>1.3.6</version>
               <configuration>
                   <repository>docker/${project.artifactId}</repository>
                   <buildArgs>
                       <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                   </buildArgs>
               </configuration>
           </plugin>
       </plugins>
   </build>

打包springboot项目推送到docker上

  • 通过命令:mvn clean package dockerfile:build
  • 通过编译器IDEA:
    在这里插入图片描述
    在这里插入图片描述
    注意:
    Maven 不识别 docker:build
    [ERROR] No plugin found for prefix ‘docker’ in the current project and in the plugin groups…

解决办法是修改 maven 的配置文件 settings.xml。( pluginGroups 在 settings.xml 中的位置很靠上)

<pluginGroups>
    <pluginGroup>com.spotify</pluginGroup>
</pluginGroups>

查看镜像:docker images
运行镜像:docker run -p 8088:8081 -t docker/plus
在这里插入图片描述
docker desktop上查看
在这里插入图片描述
浏览器内访问
在这里插入图片描述

四、springcloud项目部署到docker

Dockerfile

FROM java:8
VOLUME /tmp
ADD mh-provider-gateway.jar gateway.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/gateway.jar"]

注意:ADD后的jar名称需要和打包的jar名称一致

pom.xml

<build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
         <!-- docker 插件 begin -->
         <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
               <imageName>docker/${project.artifactId}</imageName>
               <!--docker文件所在的目录-->
               <dockerDirectory>src/main/docker</dockerDirectory>
               <resources>
                  <resource>
                     <targetPath>/</targetPath>
                     <directory>${project.build.directory}</directory>
                     <include>${project.build.finalName}.jar</include>
                  </resource>
               </resources>
            </configuration>
         </plugin>
         <!-- docker 插件 end -->
      </plugins>
   </build>

父工程pom.xml中无需修改,只需修改服务所在子工程的pom.xml
在这里插入图片描述
部署到docker desktop上
在这里插入图片描述
查看镜像:docker images
运行镜像:docker run -p 8880:8000 -t docker/mh-provider-gateway
网关服务端口:8000
注意:当服务需要访问docker容器外的应用时,例如需要访问本机的mysql、redis。不可以使用localhost、127.0.0.1作为地址,需要用dos命令查询ipconfig中的以太网ipv4地址,以此地址进行访问。

五、springboot 项目部署在Kubernetes (k8s)集群上

参考:springboot 项目部署在Kubernetes (k8s)集群上的demo

六、docker desktop从入门到放弃

虽然使用docker desktop实现了我的需求,但是win10电脑安装docker desktop后无法顺利关机,网上说是因为开启了HYper-V,所以还是放弃吧。
在电脑上安装虚拟机软件或者购买阿里云等云空间吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值