欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > spug3发布项目

spug3发布项目

2024/10/25 16:16:59 来源:https://blog.csdn.net/qq_42750608/article/details/142932790  浏览:    关键词:spug3发布项目

一、启动spug项目

1.spug代码仓库地址:

spug: 开源运维平台:面向中小型企业设计的无 Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布、任务计划、配置中心、监控、报警等一系列功能。 - Gitee.com

注意:如果要找怎么进行容器化部署的详细说明,直接在这个仓库看官方文档就行了

一般流程:

1)进入docs/docker目录,执行docker-compose up -d

2)docker-compose ps查看容器的端口,打开浏览器查看效果

3)新建登录用户

docker exec spug init_spug admin spug.cc

使用用户名admin和密码spug.cc登录

二、发布程序项目配置流程

1.发布配置->新建

注意:SPUG_APP_KEY全局变量对应的是应用配置中唯一标识符:

新建发布->常规发布

 

我为了方便将start.sh直接放在项目代码中的,而且仅仅为了实现效果,安全性之类的也没有处理,各位自己知晓流程后自行优化:

start.sh

#!/bin/bashcd /www/kubeimooc_server
docker login -u admin -p admin123  https://harbor:443
if [ $(docker ps -a | grep kubeimooc-server | wc -l) -ge 1 ];then docker stop kubeimooc-server && docker rm kubeimooc-server; fi
docker compose down
docker compose -f docker-pull.yaml pull
docker compose -f build
docker compose push
docker compose up -d

 docker-pull.yaml

version: "3"services:docker:container_name: dockerimage: plugins/docker:20drone-ssh:container_name: drone-sshimage: library/appleboy/drone-ssh:1.6.13golang:container_name: golang1.22.6-alpineimage: plugins/golang1.22.6-alpine:latestalpine:container_name: alpineimage: plugins/alpine:latest

需要拉取的镜像视情况而定

docker-compose.yaml

version: "3"services:server:container_name: kubeimooc-serverimage: harbor:443/kubeimooc/kubeimooc-server:v1.1.0build:context: .dockerfile: Dockerfilerestart: alwaysports:- '8082:8082'

注意事项:

如果只写了build,没有image配置项,docker compose push会出现skip, 比如下列写法:

# docker-compose.yml
version: '3'
services:kubeimooc-server:build:context: .dockerfile: Dockerfiletags:- harbor:443/kubeimooc/kubeimooc-server:v1.1.0

使用docker compose build,再使用docker compose push会出现"skip"错误:

[+] Pushing 1/0
 ✔ kubeimooc-server Skipped  

Dockerfile

FROM  plugins/golang1.22.6-alpine:latest as builder
WORKDIR /go/src/kubeimooc.com/server
COPY . .RUN go env -w GO111MODULE=on \&& go env -w GOPROXY=https://goproxy.cn,direct \&& go env -w CGO_ENABLED=0 \&& go env \&& go mod tidy \&& go build -o server .FROM plugins/alpine:latestLABEL MAINTAINER="test@imooc.com"WORKDIR /go/src/kubeimooc.com/server
COPY --from=0 /go/src/kubeimooc.com/server/config.yaml ./config.yaml
COPY --from=0 /go/src/kubeimooc.com/server/.kube/config ./.kube/config
COPY --from=0 /go/src/kubeimooc.com/server/server ./
EXPOSE 8082
ENTRYPOINT ./server

2.构建仓库->新建

 3.发布申请->新建申请->点击操作栏的"发布"按钮

 

[root@kubeimooc-server ~]# ls /www
kubeimooc_server
[root@kubeimooc-server ~]# ls /data/repos/
kubeimooc_server
[root@kubeimooc-server ~]# ls /data/repos/kubeimooc_server/
7_20241015144342
[root@kubeimooc-server kubeimooc_server]# docker ps
CONTAINER ID   IMAGE                                          COMMAND                 CREATED         STATUS         PORTS                                       NAMES
13694183fc70   harbor:443/kubeimooc/kubeimooc-server:v1.1.0   "/bin/sh -c ./server"   4 minutes ago   Up 4 minutes   0.0.0.0:8082->8082/tcp, :::8082->8082/tcp   kubeimooc-server

三、前端项目部署,指定后端

发布配置-》构建仓库-》发布申请,过程和第“二”步差不多;

start.sh

#!/bin/bashcd /www/kubeimooc_web
docker login -u admin -p admin123  https://harbor:443
if [ $(docker ps -a | grep kubeimooc-web | wc -l) -ge 1 ];then docker stop kubeimooc-web && docker rm kubeimooc-web; fi
export BACKEND_HOST=http://192.168.1.18:8082/
docker compose down
docker compose -f docker-pull.yaml pull
docker compose build
docker compose push
docker compose up -d

export BACKEND_HOST=http://192.168.1.18:8082 #指定后端

注意需要在docker-compose.yaml文件的environment参数中指定一下。

nginx.conf记得也指定一下(复制default.conf.template到nginx.conf)

docker-pull.yaml

version: "3"services:node:container_name: nodeimage: node:v16.20.2nginx:container_name: nginximage: nginx:alpine

docker-compose.yaml

version: "3"services:web:container_name: kubeimooc-webimage: harbor:443/kubeimooc/kubeimooc-web:v1.1.2build:context: .dockerfile: Dockerfilerestart: alwaysports:- '8081:80'environment:BACKEND_HOST: ${BACKEND_HOST}

Dockerfile

#第一阶段构建
FROM node:v16.20.2 as builder
WORKDIR /app/kubeimooc-web
#拷贝源码
COPY . .
#安装依赖
RUN npm -v
RUN rm -rf package-lock.json
RUN rm -rf node_modules
RUN echo "registry=https://registry.npmjs.org/" > /etc/npmrc
RUN npm install# 开始构建
RUN npm run build:prod# 第二阶段构建
FROM nginx:alpine
COPY --from=builder /app/kubeimooc-web/dist/ /usr/share/nginx/html/
COPY --from=builder /app/kubeimooc-web/default.conf.template /etc/nginx/templates/default.conf.template
EXPOSE 80

default.conf.template

server {listen       80;listen  [::]:80;server_name  localhost;#access_log  /var/log/nginx/host.access.log  main;location / {root /usr/share/nginx/html;#index index.html;try_files $uri $uri/ /index.html;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}location /prod-api/ {proxy_pass  ${BACKEND_HOST};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_http_version 1.1;proxy_set_header Connection "";}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}

.env.production(生产环境变量文件)

# just a flag
NODE_ENV = 'production'# base api
VUE_APP_BASE_API = '/prod-api'

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com