Files
ljwx-health/docker/compose/jenkins-complete-auto.yml
T

138 lines
3.8 KiB
YAML

version: '3.8'
services:
jenkins:
image: jenkins/jenkins:2.440-lts
container_name: jenkins-ultimate
restart: unless-stopped
privileged: true
user: root
ports:
- "8081:8080"
- "50000:50000"
volumes:
# Jenkins 数据持久化
- jenkins-data:/var/jenkins_home
- jenkins-docker-certs:/certs/client:ro
# Docker 集成
- /var/run/docker.sock:/var/run/docker.sock
# 配置文件挂载
- ./jenkins/casc:/var/jenkins_home/casc_configs:ro
- ./jenkins/plugins.txt:/usr/share/jenkins/ref/plugins.txt:ro
- ./jenkins/init-scripts:/var/jenkins_home/init.groovy.d:ro
- ./jenkins/shared-library:/var/jenkins_home/shared-library:ro
# 时区同步
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
# Jenkins 配置
- JENKINS_OPTS=--httpPort=8080
- JAVA_OPTS=-Djenkins.install.runSetupWizard=false -Xmx2g -XX:+UseG1GC
# Configuration as Code
- CASC_JENKINS_CONFIG=/var/jenkins_home/casc_configs
- CASC_RELOAD_TOKEN=jenkins-auto-reload-token
# Docker 配置
- DOCKER_HOST=unix:///var/run/docker.sock
- DOCKER_TLS_CERTDIR=/certs
# 服务集成环境变量
- JENKINS_ADMIN_ID=admin
- JENKINS_ADMIN_PASSWORD=admin123
- DOCKER_REGISTRY=localhost:5001
- GITEA_URL=http://192.168.1.6:3000
- GITEA_TOKEN=changeme-generate-in-gitea
# 邮件配置
- SMTP_HOST=localhost
- SMTP_PORT=587
- SMTP_USER=jenkins@example.com
- SMTP_PASSWORD=changeme
# Slack 通知
- SLACK_TEAM=your-team
- SLACK_TOKEN=changeme-slack-token
# 钉钉通知
- DINGTALK_WEBHOOK=changeme-dingtalk-webhook
# 云平台凭据
- AWS_ACCESS_KEY=changeme-aws-key
- AWS_SECRET_KEY=changeme-aws-secret
- AZURE_SP=changeme-azure-sp
- K8S_CONFIG=changeme-k8s-config
networks:
- cicd-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/login"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
depends_on:
- docker-registry
- registry-ui
# Docker Registry
docker-registry:
image: registry:2.8
container_name: docker-registry-ultimate
restart: unless-stopped
ports:
- "5001:5000"
volumes:
- registry-data:/var/lib/registry
- ./registry/config.yml:/etc/docker/registry/config.yml:ro
environment:
- REGISTRY_STORAGE_DELETE_ENABLED=true
- REGISTRY_HTTP_ADDR=0.0.0.0:5000
- 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']
- REGISTRY_HTTP_HEADERS_Access-Control-Max-Age=[1728000]
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials=[true]
networks:
- cicd-network
# Registry UI
registry-ui:
image: joxit/docker-registry-ui:latest
container_name: registry-ui-ultimate
restart: unless-stopped
ports:
- "5002:80"
environment:
- SINGLE_REGISTRY=true
- REGISTRY_TITLE=Jenkins Docker Registry
- DELETE_IMAGES=true
- SHOW_CONTENT_DIGEST=true
- NGINX_PROXY_PASS_URL=http://docker-registry:5000
- SHOW_CATALOG_NB_TAGS=true
- CATALOG_MIN_BRANCHES=1
- CATALOG_MAX_BRANCHES=1
networks:
- cicd-network
depends_on:
- docker-registry
networks:
cicd-network:
driver: bridge
name: cicd-network
volumes:
jenkins-data:
driver: local
name: jenkins-ultimate-data
jenkins-docker-certs:
driver: local
registry-data:
driver: local
name: registry-ultimate-data