## 后端部署
Dockerfile , serve.yaml ,jar 包
流程可归纳为以下几个步骤:
- 制作Dockerfile文件,创建应用容器镜像;
- 对镜像打标签后,将其上传至镜像仓库;
- 定义k8s配置文件;
- 使用kubectl create 命令,构建部署容器应用。
Dockerfile 示例:
# jdk基础镜像
FROM jdk:8
# 容器中创建目录
RUN mkdir -p /usr/local/serve
# 编译后的jar包copy到容器中创建到目录内
COPY server.jar /usr/local/serve/server.jar
# 指定容器启动时要执行的命令
ENTRYPOINT ["java","-jar","/usr/local/serve/server.jar"]
构建镜像:docker build -t my-server .
打标签和上传镜像: docker tag,docker push
k8s yaml 配置示例:
# 资源的类型/角色:svc
apiVersion: v1
kind: Service # 资源的类型
metadata:
name: my-server # 服务名称
namespace: default
labels:
app: my-server
spec:
type: NodePort #指定为该类型,则服务可以被外界访问到
ports:
- port: 9090 #集群内部访问端口
nodePort: 32351 #service对外开放端口
selector:
app: my-server
---
# 资源的类型/角色:deployment
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: my-server
name: my-server
spec:
replicas: 1
selector:
matchLabels:
app: my-server
strategy: {}
template:
metadata:
labels:
app: my-server
spec:
containers:
- image: #镜像地址
name: my-server
resources: {}
status: {}
部署后端: kubectl create -f serve.yaml
## 前端部署
default.conf \Dockerfile\front.yaml\前端dist包
DockerFile:
# 基于nginx镜像
FROM nginx:latest
# 描述
LABEL description="webs"
# 将打包文件复制到nginx镜像目录下
COPY dist/ /myweb
# 配置文件复制到nginx镜像中对应的目录下
COPY default.conf /etc/nginx/conf.d/default.conf
default.conf:
server {
listen 9000; # 监听端口
server_name localhost; # _代表匹配所有
root /myweb;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /open {
rewrite ^/open/?(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.244.19.145:32351;
}
}
front.yaml
#vue资源的类型/角色:deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-website
# 命名空间无
namespace: default
labels:
app: my-website
spec:
replicas: 1 # 副本数量为1
selector:
matchLabels:
app: my-website
template:
metadata:
labels:
app: my-website
spec:
nodeSelector:
website: "true"
containers:
- name: my-website
# 镜像获取地址
image: #镜像地址
ports:
- containerPort: 9000
---
# vue资源的类型/角色:svc
kind: Service
apiVersion: v1
metadata:
name: my-website
namespace: default
labels:
app: my-website
spec:
type: NodePort
externalTrafficPolicy: Cluster
ports:
- name: http
port: 9000
protocol: TCP
targetPort: 9000
nodePort: 30262 #service对外开放端口
selector:
app: my-website