Cloud Foundry中Buildpack应用转Docker镜像部署报错求助
问题
尝试将Docker镜像部署至一个原本基于Buildpack创建的Cloud Foundry云应用时,收到错误提示:
"Docker cannot be configured for a buildpack lifecycle app"
当前manifest.yml配置:
applications: - name: server-dev memory: 512M disk_quota: 512M docker: image: adambuckingham/srt-api:S11.0.0 instances: 1 env: NODE_ENV: dev services: - postgres-dev
当前功能标志(feature flags):
name state app_bits_upload enabled app_scaling enabled diego_docker enabled env_var_visibility enabled hide_marketplace_from_unauthenticated_users disabled private_domain_creation enabled resource_matching enabled route_creation enabled route_sharing enabled service_instance_creation enabled service_instance_sharing enabled set_roles_by_username enabled space_developer_env_var_visibility enabled space_scoped_private_broker_creation enabled task_creation enabled unset_roles_by_username enabled user_org_creation disabled
解决步骤
Cloud Foundry不允许直接修改已有Buildpack应用的生命周期为Docker,需按以下步骤处理:
删除原有Buildpack应用
执行命令彻底移除旧应用(-f参数跳过确认环节):cf delete server-dev -f重新部署Docker应用
使用现有manifest.yml配置创建新的Docker应用:cf push server-dev -f manifest.yml该命令会创建一个全新的基于Docker镜像的应用,并自动绑定
manifest.yml中指定的服务与环境变量。验证部署结果
执行命令检查应用状态,确认部署成功:cf app server-dev输出内容会显示应用使用的Docker镜像信息,以及实例的运行状态。
可选过渡方案(保留旧应用)
如果不想立即删除旧应用,可通过以下方式临时过渡:
- 修改
manifest.yml中的name字段(例如改为server-dev-docker) - 执行
cf push部署新的Docker应用 - 切换路由:
cf map-route server-dev-docker <你的域名>,再执行cf unmap-route server-dev <你的域名> - 确认新应用正常运行后,删除旧应用
内容的提问来源于stack exchange,提问作者Adam Buckingham
相关产品推荐
相关产品推荐

