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

参考:

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

根据安装的docker desktop上k8s对应的版本下载

docker在windows安装部署 windows 部署docker_jar

解压并执行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 文件自行加载你自己需要的镜像

*

docker在windows安装部署 windows 部署docker_jar_02

配置 k8s:

kubectl config use-context docker-desktop

docker在windows安装部署 windows 部署docker_spring_03

验证状态:

kubectl cluster-info

kubectl get nodes

docker在windows安装部署 windows 部署docker_spring_04

配置控制台:

进入k8s文件所在目录然后执行

kubectl create -f kubernetes-dashboard.yaml

docker在windows安装部署 windows 部署docker_spring_05

检查应用状态:

kubectl get pod -n kubernetes-dashboard

docker在windows安装部署 windows 部署docker_spring_06

开启访问代理

kubectl proxy

docker在windows安装部署 windows 部署docker_spring_07

访问本地链接http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

docker在windows安装部署 windows 部署docker_docker在windows安装部署_08

打开C:\Users\UserName.kube中的Config文件,找到其中的Token,从令牌进入即可。

docker在windows安装部署 windows 部署docker_jar_09

备注:查看镜像命令:docker images

docker在windows安装部署 windows 部署docker_spring_10

三、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在windows安装部署 windows 部署docker_docker在windows安装部署_11


docker desktop上查看

docker在windows安装部署 windows 部署docker_docker_12


浏览器内访问

docker在windows安装部署 windows 部署docker_docker_13

四、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在windows安装部署 windows 部署docker_spring_14


部署到docker desktop上

docker在windows安装部署 windows 部署docker_docker_15


查看镜像: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)集群上