初始化
Build docker and publish / prepare (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.admin image_name:ppanel-admin name:admin]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.api image_name:ppanel-api name:api]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.node image_name:ppanel-node name:node]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.queue image_name:ppanel-queue name:queue]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.scheduler image_name:ppanel-scheduler name:scheduler]) (push) Has been cancelled
Build docker and publish / deploy (push) Has been cancelled
Build docker and publish / notify (push) Has been cancelled
Build docker and publish / prepare (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.admin image_name:ppanel-admin name:admin]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.api image_name:ppanel-api name:api]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.node image_name:ppanel-node name:node]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.queue image_name:ppanel-queue name:queue]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.scheduler image_name:ppanel-scheduler name:scheduler]) (push) Has been cancelled
Build docker and publish / deploy (push) Has been cancelled
Build docker and publish / notify (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
FROM golang:1.23-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -trimpath -o /ppanel-admin ./apps/admin/admin.go
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk add --no-cache ca-certificates tzdata
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=builder /ppanel-admin .
|
||||
COPY apps/admin/etc /app/etc
|
||||
|
||||
EXPOSE 8081
|
||||
CMD ["./ppanel-admin", "-f", "etc/admin.yaml"]
|
||||
@@ -0,0 +1,19 @@
|
||||
FROM golang:1.23-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -trimpath -o /ppanel-api ./apps/api/api.go
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk add --no-cache ca-certificates tzdata
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=builder /ppanel-api .
|
||||
COPY apps/api/etc /app/etc
|
||||
|
||||
EXPOSE 8080
|
||||
CMD ["./ppanel-api", "-f", "etc/api.yaml"]
|
||||
@@ -0,0 +1,19 @@
|
||||
FROM golang:1.23-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -trimpath -o /ppanel-node ./apps/node/node.go
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk add --no-cache ca-certificates tzdata
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=builder /ppanel-node .
|
||||
COPY apps/node/etc /app/etc
|
||||
|
||||
EXPOSE 8082
|
||||
CMD ["./ppanel-node", "-f", "etc/node.yaml"]
|
||||
@@ -0,0 +1,18 @@
|
||||
FROM golang:1.23-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -trimpath -o /ppanel-queue ./apps/queue/queue.go
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk add --no-cache ca-certificates tzdata
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=builder /ppanel-queue .
|
||||
COPY apps/queue/etc /app/etc
|
||||
|
||||
CMD ["./ppanel-queue", "-f", "etc/queue.yaml"]
|
||||
@@ -0,0 +1,18 @@
|
||||
FROM golang:1.23-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -trimpath -o /ppanel-scheduler ./apps/scheduler/scheduler.go
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk add --no-cache ca-certificates tzdata
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=builder /ppanel-scheduler .
|
||||
COPY apps/scheduler/etc /app/etc
|
||||
|
||||
CMD ["./ppanel-scheduler", "-f", "etc/scheduler.yaml"]
|
||||
@@ -0,0 +1,55 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Infrastructure
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
MYSQL_DATABASE: ppanel
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
- ../sql:/docker-entrypoint-initdb.d
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
|
||||
# Observability
|
||||
jaeger:
|
||||
image: jaegertracing/all-in-one:1.57
|
||||
ports:
|
||||
- "16686:16686"
|
||||
- "4317:4317"
|
||||
- "4318:4318"
|
||||
- "14268:14268"
|
||||
environment:
|
||||
COLLECTOR_OTLP_ENABLED: "true"
|
||||
COLLECTOR_OTLP_HTTP_HOST_PORT: "0.0.0.0:4318"
|
||||
COLLECTOR_OTLP_GRPC_HOST_PORT: "0.0.0.0:4317"
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:v2.51.0
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:10.4.0
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
GF_SECURITY_ADMIN_PASSWORD: admin
|
||||
depends_on:
|
||||
- prometheus
|
||||
- jaeger
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
redis_data:
|
||||
@@ -0,0 +1,67 @@
|
||||
# 云端部署用 docker-compose
|
||||
# 镜像由 CI 预先构建并推送到镜像仓库
|
||||
# 本地基础设施 (mysql/redis) 需提前独立部署
|
||||
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
ppanel-api:
|
||||
image: ${PPANEL_REPO}/ppanel-api:${PPANEL_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- ./etc/api:/app/etc
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
|
||||
ppanel-admin:
|
||||
image: ${PPANEL_REPO}/ppanel-admin:${PPANEL_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8081:8081"
|
||||
volumes:
|
||||
- ./etc/admin:/app/etc
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
|
||||
ppanel-node:
|
||||
image: ${PPANEL_REPO}/ppanel-node:${PPANEL_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8082:8082"
|
||||
volumes:
|
||||
- ./etc/node:/app/etc
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
|
||||
ppanel-queue:
|
||||
image: ${PPANEL_REPO}/ppanel-queue:${PPANEL_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./etc/queue:/app/etc
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
|
||||
ppanel-scheduler:
|
||||
image: ${PPANEL_REPO}/ppanel-scheduler:${PPANEL_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./etc/scheduler:/app/etc
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
@@ -0,0 +1,119 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
ppanel-api:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile.api
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "6160:6160"
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
- jaeger
|
||||
volumes:
|
||||
- ../apps/api/etc:/app/etc
|
||||
|
||||
ppanel-admin:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile.admin
|
||||
ports:
|
||||
- "8081:8081"
|
||||
- "6161:6161"
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
- jaeger
|
||||
volumes:
|
||||
- ../apps/admin/etc:/app/etc
|
||||
|
||||
ppanel-node:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile.node
|
||||
ports:
|
||||
- "8082:8082"
|
||||
- "6162:6162"
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
- jaeger
|
||||
volumes:
|
||||
- ../apps/node/etc:/app/etc
|
||||
deploy:
|
||||
replicas: 2
|
||||
|
||||
ppanel-queue:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile.queue
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
- jaeger
|
||||
volumes:
|
||||
- ../apps/queue/etc:/app/etc
|
||||
|
||||
ppanel-scheduler:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile.scheduler
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
- jaeger
|
||||
volumes:
|
||||
- ../apps/scheduler/etc:/app/etc
|
||||
|
||||
# Infrastructure
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
MYSQL_DATABASE: ppanel
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
- ../sql:/docker-entrypoint-initdb.d
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
|
||||
# Observability
|
||||
jaeger:
|
||||
image: jaegertracing/all-in-one:1.57
|
||||
ports:
|
||||
- "16686:16686"
|
||||
- "4317:4317"
|
||||
- "4318:4318"
|
||||
- "14268:14268"
|
||||
environment:
|
||||
COLLECTOR_OTLP_ENABLED: "true"
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:v2.51.0
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:10.4.0
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
GF_SECURITY_ADMIN_PASSWORD: admin
|
||||
depends_on:
|
||||
- prometheus
|
||||
- jaeger
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
redis_data:
|
||||
@@ -0,0 +1,22 @@
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
evaluation_interval: 15s
|
||||
|
||||
scrape_configs:
|
||||
# 注意:在 Docker-compose (Mac) 中访问宿主机的服务,请使用 host.docker.internal
|
||||
# 因为我们开发时,服务是直接跑在宿主机的 go run 上
|
||||
- job_name: "zero-ppanel-api"
|
||||
static_configs:
|
||||
- targets: ["host.docker.internal:6160"]
|
||||
|
||||
- job_name: "zero-ppanel-admin"
|
||||
static_configs:
|
||||
- targets: ["host.docker.internal:6161"]
|
||||
|
||||
- job_name: "zero-ppanel-node"
|
||||
static_configs:
|
||||
- targets: ["host.docker.internal:6162"]
|
||||
|
||||
- job_name: "zero-ppanel-rpc-core"
|
||||
static_configs:
|
||||
- targets: ["host.docker.internal:6163"]
|
||||
Reference in New Issue
Block a user