群晖 怎么运行java项目 群晖可以部署java项目吗

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、准备一个java项目(任意项目不一定是java项目)
  • 二、使用dockerfile制作镜像
  • 1.vi Dockerfile
  • 2.创建镜像
  • 测试镜像
  • 三、推送镜像到镜像仓库
  • 1.创建私有仓库
  • 2.推送镜像
  • 四、控制器部署镜像
  • 五、对外暴露服务


前言

使用kubernetes部署java项目并实现应用的访问、项目部署流程图如下

群晖 怎么运行java项目 群晖可以部署java项目吗_k8s


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备一个java项目(任意项目不一定是java项目)

目的为制作镜像做准备,我这里使用的是一个war包,没有使用jar包是因为想给自己编写dockerfile时创造点麻烦。

二、使用dockerfile制作镜像

1.vi Dockerfile

代码如下(示例):
FROM:基于tomcat底层镜像
MAINTAINER: 作者
WORKER: 相当于cd
RUN:在刚cd到的目录执行命令、多个命令用&&分隔
COPY:这里写的是将Dockerfile同级目录下的bbmeow.war复制到相应目录
EXPOSE:暴露端口

FROM tomcat MAINTAINER lzl WORKDIR /usr/local/tomcat/ RUN rm -rf webapps && mv webapps.dist webapps COPY bbmeow.war /usr/local/tomcat/webapps/ EXPOSE 8080
FROM tomcat MAINTAINER lzl WORKDIR /usr/local/tomcat/ RUN rm -rf webapps && mv webapps.dist webapps COPY bbmeow.war /usr/local/tomcat/webapps/ EXPOSE 8080
FROM tomcat MAINTAINER lzl WORKDIR /usr/local/tomcat/ RUN rm -rf webapps && mv webapps.dist webapps COPY bbmeow.war /usr/local/tomcat/webapps/ EXPOSE 8080

2.创建镜像

代码如下(示例):
执行docker build -t 镜像名称(任意). 命令

docker build -t mytomcat .
docker build -t mytomcat .
docker build -t mytomcat .

注意命令最后的“.” 是当前目录的意思


测试镜像

docker run 我们刚刚创建的镜像 mytomcat

docker run -d -p 8081:8080 --name mytomcattest mytomcat
docker run -d -p 8081:8080 --name mytomcattest mytomcat
docker run -d -p 8081:8080 --name mytomcattest mytomcat

三、推送镜像到镜像仓库

如果你有自己的镜像仓库如阿里等,可以直接推送到已有的仓库上。
这里使用的是本地仓库。

1.创建私有仓库

执行命令

#拉取基础镜像 docker pull registry #构建本地仓库 docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry #这时可以通过 curl测试一下 curl 本地仓库所在节点的ip(你的k8s集群可以访问到):5000/v2/_catalog
#拉取基础镜像 docker pull registry #构建本地仓库 docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry #这时可以通过 curl测试一下 curl 本地仓库所在节点的ip(你的k8s集群可以访问到):5000/v2/_catalog
#拉取基础镜像 docker pull registry #构建本地仓库 docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry #这时可以通过 curl测试一下 curl 本地仓库所在节点的ip(你的k8s集群可以访问到):5000/v2/_catalog

2.推送镜像

先打一个标签
docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat(自定义名称):v1(自定义版本号)

docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat:v1
docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat:v1
docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat:v1

查看打好的镜像

群晖 怎么运行java项目 群晖可以部署java项目吗_java_02

push镜像

docker push 刚刚打好的镜像tag

docker push 172.42.42.1:5000/mytomcat:v1
docker push 172.42.42.1:5000/mytomcat:v1
docker push 172.42.42.1:5000/mytomcat:v1

报错的解决办法

vi /etc/docker/daemon.json #添加如下内容 "insecure-registries":["刚才的ip:5000"]
vi /etc/docker/daemon.json #添加如下内容 "insecure-registries":["刚才的ip:5000"]
vi /etc/docker/daemon.json #添加如下内容 "insecure-registries":["刚才的ip:5000"]

测试

curl 刚才的ip:5000/v2/_catalog curl 刚才的ip:5000/v2/镜像名/tags/list
curl 刚才的ip:5000/v2/_catalog curl 刚才的ip:5000/v2/镜像名/tags/list
curl 刚才的ip:5000/v2/_catalog curl 刚才的ip:5000/v2/镜像名/tags/list

四、控制器部署镜像

现在k8s集群的机器上先pull上传好的镜像

docker pull 172.42.42.1:5000/mytomcat:v1
docker pull 172.42.42.1:5000/mytomcat:v1
docker pull 172.42.42.1:5000/mytomcat:v1

deployment部署

kubectl create deployment bbmeow --image 172.42.42.1:5000/mytomcat:v1 --dry-run -o yaml > bbmeow.yaml
kubectl create deployment bbmeow --image 172.42.42.1:5000/mytomcat:v1 --dry-run -o yaml > bbmeow.yaml
kubectl create deployment bbmeow --image 172.42.42.1:5000/mytomcat:v1 --dry-run -o yaml > bbmeow.yaml
kubectl create -f bbmeow.yaml kubectl get pod
kubectl create -f bbmeow.yaml kubectl get pod
kubectl create -f bbmeow.yaml kubectl get pod

五、对外暴露服务

我这里使用的是nodeport的方式也就是service,也可以使用ingress或者loadbalan…
扩容deployment

kubectl scale deployment bbmeow --replicas 3
kubectl scale deployment bbmeow --replicas 3
kubectl scale deployment bbmeow --replicas 3

实现暴露

kubectl expose deployment bbmeowsvc --port 8111 --target-port 8080 --type NodePort #查看svc kubectl get svc
kubectl expose deployment bbmeowsvc --port 8111 --target-port 8080 --type NodePort #查看svc kubectl get svc
kubectl expose deployment bbmeowsvc --port 8111 --target-port 8080 --type NodePort #查看svc kubectl get svc

群晖 怎么运行java项目 群晖可以部署java项目吗_java_03

这时可以通过图片中的32519端口访问服务了。

原文链接:https://blog.51cto.com/u_16099350/11267978

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享