Win10安装docker,部署springboot项目到docker上
参考:
1、Windows Docker 安装 2、win10安装k8s
3、k8s通过docker desktop启动并且基于docker部署springboot项目
4、KUBERNETES部署-基于DOCKER DESKTOP
根据安装的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)集群上