
plotbox/teamcity-agent本镜像是基于官方JetBrains TeamCity Agent镜像的定制版本,在保留原版Agent核心功能的基础上,预安装了多种常用构建工具、编程语言环境及系统工具,以扩展TeamCity的构建能力,满足复杂CI/CD场景需求。
作为TeamCity构建代理(Agent),连接TeamCity Server并执行构建任务。通过预安装的额外工具,支持多语言项目构建、容器化应用打包、自动化测试及复杂构建流程,减少构建环境配置时间,提升构建效率。
update-alternatives切换)假设镜像存储于私有仓库(如registry.example.com/teamcity-agent-custom:latest),或通过本地Dockerfile构建。拉取命令:
bashdocker pull registry.example.com/teamcity-agent-custom:latest
bashdocker run -d \ --name teamcity-agent-01 \ -v /opt/teamcity/agents/agent01/conf:/data/teamcity_agent/conf \ # Agent配置目录(持久化) -v /opt/teamcity/agents/agent01/work:/data/teamcity_agent/work \ # 工作空间(持久化构建产物) -e SERVER_URL="[***]" \ # TeamCity Server地址 -e AGENT_NAME="agent-01-custom" \ # 自定义Agent名称(可选,默认随机生成) -e AGENT_TOKEN="your-agent-token" \ # Agent注册令牌(从Server获取) -e DOCKER_HOST="unix:///var/run/docker.sock" \ # 若需使用Docker,挂载宿主机Docker守护进程 -v /var/run/docker.sock:/var/run/docker.sock \ # 共享宿主机Docker(可选,用于Docker in Docker) registry.example.com/teamcity-agent-custom:latest
创建docker-compose.yml,更便于管理Agent生命周期:
yamlversion: '3.8' services: teamcity-agent: image: registry.example.com/teamcity-agent-custom:latest container_name: teamcity-agent-01 restart: always volumes: - ./agent/conf:/data/teamcity_agent/conf # 本地目录挂载Agent配置 - ./agent/work:/data/teamcity_agent/work # 本地目录挂载工作空间 - /var/run/docker.sock:/var/run/docker.sock # 可选:启用Docker访问 environment: - SERVER_URL=[***] # TeamCity Server地址(需与Server网络互通) - AGENT_NAME=agent-01-custom - AGENT_TOKEN=your-agent-token # 从TeamCity Server > Agents > Pools > Create Agent获取 - WORK_DIR=/data/teamcity_agent/work # 工作空间路径(默认与挂载目录一致) networks: - teamcity-network # 确保与TeamCity Server在同一网络 networks: teamcity-network: external: true # 假设已存在与Server共享的网络
启动命令:
bashdocker-compose up -d
| 环境变量 | 用途 | 默认值 | 必须配置 |
|---|---|---|---|
SERVER_URL | TeamCity Server地址(含端口) | 无 | 是 |
AGENT_NAME | Agent显示名称(需唯一) | 随机生成(格式:agent-{随机字符串}) | 否 |
AGENT_TOKEN | Agent注册令牌(从Server获取) | 无 | 是(首次注册) |
WORK_DIR | 构建工作空间路径 | /data/teamcity_agent/work | 否 |
DOCKER_HOST | Docker守护进程地址(启用Docker时) | unix:///var/run/docker.sock | 否 |
AGENT_OPTS | Agent JVM参数(如内存配置) | -Xmx512m -Xms256m | 否 |
HTTP_PROXY | 代理服务器地址(如需外部网络访问) | 无 | 否 |
| 挂载路径 | 用途 | 建议权限 |
|---|---|---|
/data/teamcity_agent/conf | Agent配置文件(含与Server通信的密钥) | 读写 |
/data/teamcity_agent/work | 构建产物、临时文件存储 | 读写 |
/var/run/docker.sock | 宿主机Docker守护进程(如需Docker in Docker) | 只读 |
/root/.m2(可选) | Maven本地仓库(缓存依赖,加速构建) | 读写 |
/root/.npm(可选) | npm本地仓库(缓存依赖) | 读写 |
若需覆盖预安装工具版本,可通过环境变量指定路径,例如:
bash-e MAVEN_HOME="/opt/maven-custom" # 优先使用自定义Maven路径(需提前挂载工具目录)
通过docker run参数限制CPU/内存:
bash--cpus 2 --memory 4g # 限制2核CPU、4GB内存
SERVER_URL(建议与Server部署在同一网络,或通过端口映射暴露Server)tcagent,UID 1000)对目录有读写权限,可通过-u root临时调试(生产环境不建议)SERVER_URL是否正确(需包含http://或https://)、网络是否互通(可通过docker exec -it <agent-container> curl <server-url>测试)/var/run/docker.sock已挂载,且容器内用户有访问权限(可添加--group-add docker参数)docker exec -it <agent-container> <tool> --version检查预安装工具版本,或提交镜像更新需求
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务