将stripe-cli集成至现有docker-compose配置并启用事件转发
问题
我们可以通过以下终端命令启动stripe-cli:
docker run --rm -it stripe/stripe-cli listen --forward-to http://127.0.0.1:8080/stripe/webhook --api-key sk_API-KEY
但如何将该服务添加到已有的、可在本地与AWS环境正常运行的docker-compose文件中?我希望stripe-cli检测到事件时,能触发javaapp中的指定端点。
需扩展的示例docker-compose文件如下:
version: "3.8" services: https: build: context: ./docker/nginx ports: - 443:443 - 80:80 extra_hosts: - host.docker.internal:host-gateway javaapp: image: 1.dkr.ecr.eu-west-1.amazonaws.com/JAVA_APP:${JAVA_APP:-latest} ports: - 8080:8080 environment: JAVA_OPTS: -java.app.config=/etc/config.groovy volumes: - ./configuration/application/java/ExternalConfig.docker.groovy:/etc/config.groovy extra_hosts: - host.docker.internal:host-gateway profiles: - javaapp redis: image: redis:6.2.6-alpine ports: - 6379:6379 volumes: - company-redis:/data mongo: image: mongo:3.6.12 ports: - 27017:27017 volumes: - company-mongo:/data/db/ volumes: company-mongo: company-redis:
解决方案
直接在现有services块下新增stripe-cli服务即可,修改后的完整docker-compose文件如下:
version: "3.8" services: https: build: context: ./docker/nginx ports: - 443:443 - 80:80 extra_hosts: - host.docker.internal:host-gateway javaapp: image: 1.dkr.ecr.eu-west-1.amazonaws.com/JAVA_APP:${JAVA_APP:-latest} ports: - 8080:8080 environment: JAVA_OPTS: -java.app.config=/etc/config.groovy volumes: - ./configuration/application/java/ExternalConfig.docker.groovy:/etc/config.groovy extra_hosts: - host.docker.internal:host-gateway profiles: - javaapp stripe-cli: image: stripe/stripe-cli command: listen --forward-to http://javaapp:8080/stripe/webhook --api-key sk_API-KEY depends_on: - javaapp profiles: - javaapp # 对应原命令的-it参数,如需保留终端交互则保留以下两项 tty: true stdin_open: true redis: image: redis:6.2.6-alpine ports: - 6379:6379 volumes: - company-redis:/data mongo: image: mongo:3.6.12 ports: - 27017:27017 volumes: - company-mongo:/data/db/ volumes: company-mongo: company-redis:
关键说明
- 网络访问:Docker Compose默认创建共享网络,直接用服务名
javaapp代替127.0.0.1即可访问Java应用容器,无需依赖宿主机端口映射。 - 依赖控制:通过
depends_on确保stripe-cli在javaapp启动后再启动,避免服务未就绪导致的连接失败。 - Profile同步:将
stripe-cli加入javaappprofile,保证只有启动Java应用时才会启动该服务,和原有配置逻辑一致。 - 交互模式:
tty: true和stdin_open: true对应原命令的-it参数,若不需要终端交互可直接删除。 - 安全优化:建议把硬编码的
sk_API-KEY替换为环境变量(如${STRIPE_SECRET_KEY}),避免密钥暴露,更符合配置规范。
内容的提问来源于stack exchange,提问作者Michal_Szulc
相关产品推荐
相关产品推荐

