宿主机部署方案
nginx + 前端静态文件
一般情况下,我们部署前端包的时候,都是直接将前端包上传到服务器上,然后通过nginx指向静态目录的位置。即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| http{ include mime.types; default_type application/octet-stream;
server { listen 80; server_name localhost; location / { root /opt/app/rms_fg/dist; index index.html; } } }
|
Docker部署方案
制作镜像
基于nginx基础镜像,将前端包拷贝到镜像中nginx指定的位置。
- 创建Dockerfile文件:
vim Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| FROM nginx
MAINTAINER okami LABEL authors="okami"
ARG port=80 ENV SERVER_NAME=dist
EXPOSE $port
RUN mkdir -p /opt/app/rms_fg/$SERVER_NAME
COPY dist /opt/app/rms_fg/$SERVER_NAME/ RUN rm -rf /etc/nginx/nginx.conf
COPY ./nginx.conf /etc/nginx/nginx.conf
|
- 将前端包
dist
拷贝至Dockerfile同级目录
- 在Dockerfile同级目录编写nginx的配置文件
nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| user root; worker_processes 1;
events { worker_connections 1024; }
http { include mime.types; default_type application/octet-stream;
sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost;
location / { root /opt/app/rms_fg/dist; index index.html; } } }
|
- 编译镜像,在Docekrfile的同级目录执行
docker build
1
| export serverName=dist && imageVersion=v1 && sudo docker build -t $serverName:$imageVersion .
|
- 编辑结束后,可以通过
docker images
查看镜像
将镜像上传到镜像仓库
1 2 3 4 5 6 7 8 9
| imageVersion=v1 serverName=dist harbor_address=harbor.test-okami.com harborProjectName=frontend-test
sudo docker login $harbor_address sudo docker tag $serverName:$imageVersion $harbor_address/${harborProjectName}/${serverName}:${imageVersion} sudo docker push $harbor_address/$harborProjectName/$serverName:$imageVersion
|
启动
检查docker进程
- 通过
docker ps
命令即可查看docker进程
k8s部署方案
使用k8s部署服务,前提需要在镜像仓库中有镜像
制作镜像并上传仓库
编写yaml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| apiVersion: v1 kind: ServiceAccount metadata: name: dist --- apiVersion: apps/v1 kind: Deployment metadata: name: dist spec: replicas: 2 selector: matchLabels: app: dist version: v8 template: metadata: labels: app: dist version: v8 spec: terminationGracePeriodSeconds: 0 serviceAccountName: dist containers: - name: dist image: harbor.test-okami.com/frontend-test/dist:v1 imagePullPolicy: Always ports: - containerPort: 8080 securityContext: runAsUser: 0 runAsGroup: 0 allowPrivilegeEscalation: true capabilities: add: ["NET_ADMIN", "NET_RAW", "SYS_TIME"]
--- apiVersion: v1 kind: Service metadata: name: dist labels: app: dist version: v1 spec: type: LoadBalancer ports: - port: 80 name: http appProtocol: HTTP selector: app: dist version: v1
|
部署
- 通过
kubectl apply -f app.yaml -n <namespace>
,将前端部署到k8s环境中
查看服务
查看service
1
| $ kubectl get svc -n <namespace>
|
查看pods
1
| $ kubectl get pods -n <namespace>
|
查看pod的日志
1
| $ kubectl logs -f pod/<pod_name> -n <namespace>
|