
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
cf-flyway-resource是基于https://hub.docker.com/_/ubuntu%E6%9E%84%E5%BB%BA%E7%9A%84Concourse-CI%E8%B5%84%E6%BA%90%E9%95%9C%E5%83%8F%EF%BC%8C%E7%94%A8%E4%BA%8E%E9%80%9A%E8%BF%87https://flywaydb.org/%E5%9C%A8Cloud Foundry数据库服务上执行数据库迁移。它提供了与Cloud Foundry数据库服务的无缝连接,支持版本控制和自动化迁移流程,适用于CI/CD环境中的数据库 schema 管理。
适用于需要通过Concourse-CI自动化管理Cloud Foundry数据库服务迁移的场景,尤其适合:
在Concourse pipeline中定义资源类型:
yml- name: cf-flyway-resource type: docker-image source: repository: emeraldsquad/cf-flyway-resource tag: 5.0.0
定义具体资源实例:
yml- name: cf-flyway type: cf-flyway-resource source: api: ((pcf-api)) username: ((product-name))-ciuser password: ((pcf-ciuser-passwd)) organization: ((product-name))-org space: ((pcf-space)) service: ((database-service-name))
source 参数说明
| 参数 | 要求 | 说明 |
|---|---|---|
| api | 必填 | Cloud Foundry Cloud Controller的API端点 |
| username | 必填 | 用于认证的用户名 |
| password | 必填 | 用于认证的密码 |
| organization | 必填 | 目标组织名称 |
| space | 必填 | 目标空间名称 |
| service | 必填 | 数据库服务实例名称 |
示例配置:
yml- name: cf-flyway type: cf-flyway-resource source: api: cf-api-endpoint username: cf-user password: cf-user-password organization: organization-name space: space-name service: service-instance-name
version
check脚本始终返回当前版本号(UTC时间戳),若未收到版本则生成初始版本。
version
in脚本始终返回当前版本号,因此该资源不能用作输入触发器。
metadata
从Cloud Foundry API读取服务信息生成元数据,示例:
ymlcf_api : https://my.api.endpoint.com cf_org : organization-name cf_space : space-name dashboard_url : https://{hostname}/service-instances/53rv1c30-1n5t-aNc3-Gu1d-000000000000/ metadata_url : /v2/service_instances/53rv1c30-1n5t-aNc3-Gu1d-000000000000 service_instance : cf-db-service-instance-name service_label : cf-db-service-name service_plan : cf-db-service-plan
migration
将数据库schema迁移到Cloud Foundry数据库服务。out脚本会:
flyway.confflyway info → flyway migrate → flyway info)生成的flyway.conf默认设置flyway.cleanDisabled=true,用户提供的其他配置会被追加,但以下配置会被覆盖:
confflyway.url={service-key jdbc:driver//url/database} # 由Cloud Foundry service-key凭据覆盖 flyway.user={service-key username} # 由Cloud Foundry service-key凭据覆盖 flyway.password={service-key password} # 由Cloud Foundry service-key凭据覆盖 flyway.locations={params.locations} # 由locations参数覆盖(必填) flyway.cleanDisabled=true # 由clean_disabled参数覆盖(可选,默认true)
可通过设置delete_service_key: true自动删除service-key。
支持的数据库
run_task(可选)
当Concourse实例无法直接访问数据库服务时,可使用run_task: true(默认):
run-task命令执行Flyway命令delete_application: true自动解绑并删除应用推送的应用清单示例:
ymlapplications: - name: {service-instance-name}-flyway buildpacks: [binary_buildpack] health-check-type: process no-route: true instances: 0 # 加快部署速度 disk_quota: 256M memory: 256M command: sleep 3600 # 确保应用1小时后自动停止
SSH访问应用容器:
bashcf scale {service-instance-name}-flyway -i 1 # 扩展实例数 cf start {service-instance-name}-flyway # 启动应用 cf ssh {service-instance-name}-flyway # SSH连接
容器内已配置Flyway CLI:
bashvcap@xxxxxxxx-xxxx-xxxx-xxxx-xxxx:~$ cd app vcap@xxxxxxxx-xxxx-xxxx-xxxx-xxxx:~/app$ ./flyway info
使用完毕后停止应用:
bashcf stop {service-instance-name}-flyway
params 参数说明
| 参数 | 要求 | 说明 |
|---|---|---|
| locations | 必填 | 迁移文件位置,可为逗号分隔字符串或YAML列表。前缀说明:classpath:(类路径,支持SQL和Java迁移),filesystem:(文件系统路径,仅SQL迁移) |
| commands | 可选 | 执行的Flyway命令列表,默认[info, migrate, info]。支持命令:migrate、clean、info、validate、undo(专业版)、baseline、repair |
| clean_disabled | 可选 | 是否禁用clean操作,默认true |
| delete_service_key | 可选 | 迁移完成后是否删除service-key,默认false |
| flyway_conf | 可选 | Flyway配置,可为文件路径或内联配置。以下配置会被覆盖:url、user、password、locations、cleanDisabled |
| jdbc_builder | 可选 | 用于连接未识别数据库服务的shell脚本,接收service-key JSON作为参数,输出JDBC URL |
| run_task | 可选 | 是否通过Cloud Foundry run-task执行迁移,默认true |
| delete_application | 可选 | 使用run_task时是否删除应用,默认false |
| memory | 可选 | run_task时任务内存限制,默认1024M,需带单位(B/K/KB/M/MB/G/GB/T/TB) |
| disk_quota | 可选 | run_task时任务磁盘限制,默认1024M,需带单位 |
| cf_logs_wait_time | 可选 | run_task时获取日志前的延迟(秒),默认15 |
| cf_logs_max_retry_count | 可选 | run_task时获取日志的最大重试次数,默认3 |
使用示例
1. 仅使用必填locations参数
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: locations: filesystem:my-app-package/DB/Schema
2. 添加Flyway配置文件
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: locations: filesystem:my-app-package/DB/Schema flyway_conf: my-app-package/DB/flyway.config
3. 内联Flyway配置
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: locations: filesystem:my-app-package/DB/Schema flyway_conf: | flyway.schemas=dbo flyway.connectRetries=2
4. 自定义命令序列
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: locations: filesystem:my-app-package/DB/Schema commands: [info, validate]
5. 使用Flyway专业版功能
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: locations: filesystem:my-app-package/DB/Schema commands: [info, undo, info] flyway_conf: | flyway.licenseKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
6. 使用jdbc_builder
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: locations: filesystem:my-app-package/DB/Schema jdbc_builder: | echo jdbc:postgresql://$(echo $1 | jq -r '.uri' | grep -Poh '(?<=@).*')
7. 使用run_task并自动删除应用
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: run_task: true delete_application: true locations: filesystem:my-app-package/DB/Schema
8. 自定义内存和磁盘配额
ymljobs: - name: deploy plan: - get: my-app-package - put: cf-flyway params: run_task: true locations: filesystem:my-app-package/DB/Schema memory: 256M disk_quota: 256M
version
out脚本始终返回新的版本号(UTC时间戳)。
metadata
与in脚本生成的元数据格式相同,包含Cloud Foundry服务详细信息。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务