Files
bruno 8c3881bf89 🚀 feat: 企业级CI/CD基础设施完整部署方案
✨ 新功能:
- 一键自动化部署脚本 (build-infra.sh)
- 统一端口配置 (3开头端口,避免冲突)
- 多平台Docker构建支持 (AMD64 + ARM64)
- Jenkins Configuration as Code (零手动配置)
- 完整的服务验证和健康检查

🏗️ 核心组件:
- Jenkins LTS + JDK21 (端口38080)
- Gitea 1.21 (端口33000, SSH: 32222)
- Docker Registry + UI (端口35001/35002)
- 统一cicd-network网络

📋 管理工具:
- 自动化部署和验证脚本
- 健康检查和日志管理工具
- 完整的文档和故障排查指南

🎯 已验证功能:
- 所有服务正常启动和运行
- API和Web界面完全可访问
- 多平台构建环境就绪
- 完整的CI/CD流水线支持

适用环境: Mac Studio M2 + Docker Desktop
2025-08-23 22:11:50 +08:00

77 lines
2.3 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
registry:
image: registry:2
container_name: docker-registry
restart: unless-stopped
ports:
- "5001:5000" # 使用5001端口避免冲突
volumes:
# 使用 Docker 命名卷持久化镜像数据
- registry-data:/var/lib/registry
# 配置文件
- ../registry/config.yml:/etc/docker/registry/config.yml:ro
# 认证文件 (已禁用)
# - ../registry/auth:/auth:ro
# 证书目录(如果使用HTTPS)
- ../registry/certs:/certs:ro
environment:
# 基础配置
- REGISTRY_STORAGE_DELETE_ENABLED=true # 允许删除镜像
# HTTP认证配置 (已禁用用于测试)
# - REGISTRY_AUTH=htpasswd
# - REGISTRY_AUTH_HTPASSWD_REALM=Docker Registry
# - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
# 日志配置
- REGISTRY_LOG_LEVEL=info
# CORS配置(支持Web UI)
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin=['*']
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods=['HEAD','GET','OPTIONS','DELETE']
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers=['Authorization','Accept','Cache-Control']
networks:
- registry-network
- cicd-network # 连接到CICD网络
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5000/v2/_catalog"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
# Registry Web UI (可选)
registry-ui:
image: joxit/docker-registry-ui:latest
container_name: registry-ui
restart: unless-stopped
ports:
- "5002:80"
environment:
- SINGLE_REGISTRY=true
- REGISTRY_TITLE=Private Docker Registry
- DELETE_IMAGES=true
- SHOW_CONTENT_DIGEST=true
- NGINX_PROXY_PASS_URL=http://registry:5000
- SHOW_CATALOG_NB_TAGS=true
- CATALOG_MIN_BRANCHES=1
- CATALOG_MAX_BRANCHES=1
- TAGLIST_PAGE_SIZE=100
- REGISTRY_SECURED=false
- CATALOG_ELEMENTS_LIMIT=1000
networks:
- registry-network
depends_on:
- registry
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/"]
interval: 30s
timeout: 10s
retries: 3
networks:
registry-network:
driver: bridge
cicd-network:
external: true
volumes:
registry-data:
driver: local