You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编辑Caddyfile为ECS Fargate中拉取ECR镜像的应用提供SSL服务

操作指南

核心前提说明

ECS Fargate不支持直接登录运行中的容器修改本地文件,所有修改重启后会丢失,Caddyfile配置需要提前注入到Caddy容器的启动流程中,以下是可落地的实现方案:


推荐方案:自定义Caddy镜像打包配置

步骤1:编写适配场景的Caddyfile

同ECS任务内的多个容器共享网络命名空间,你可以直接通过localhost+业务容器端口访问业务应用,参考配置如下:

# 替换为你实际的业务域名
your-domain.com {
  # 替换为你的邮箱,用于Let's Encrypt证书到期通知
  tls your-email@example.com
  # 替换为业务容器实际监听的端口
  reverse_proxy localhost:8080
}

如果你的业务容器和Caddy不在同一个ECS任务中,将localhost:8080替换为业务应用的内部服务发现地址/负载均衡内网地址即可。

步骤2:构建自定义Caddy镜像

在Caddyfile同级目录创建Dockerfile,内容如下:

# 引用官方Caddy基础镜像
FROM caddy:latest
# 把你编写的Caddyfile覆盖到镜像默认配置路径
COPY ./Caddyfile /etc/caddy/Caddyfile

本地构建镜像后推送到你的ECR私有仓库。

步骤3:更新ECS任务定义并重新部署

  • 替换原有Caddy容器的镜像地址为你刚推送到ECR的自定义镜像地址
  • 确认Caddy容器所在的ECS任务具备公网访问能力(分配公网IP或VPC配置NAT网关),Caddy申请SSL证书需要公网通信
  • 确认关联的安全组开放80、443端口的入站规则,80端口用于HTTP-01证书挑战,必须开放
  • 将你的业务域名解析到Caddy容器的公网IP/关联的负载均衡地址

部署完成后访问你的域名即可自动生效SSL,不会再显示Caddy默认页面。


备选方案:无需构建镜像,通过参数存储注入配置

如果你不想维护自定义Caddy镜像,可以把编写好的Caddyfile存入AWS Systems Manager Parameter Store或Secrets Manager,给ECS任务执行角色授予对应配置的读取权限后,在Caddy容器的启动命令中直接拉取配置启动,启动命令参考:
caddy run --config "ssm://parameter-store中Caddyfile的路径"


内容的提问来源于stack exchange,提问作者not-up

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:18:03