如何在Docker中正确使用Stripe CLI?登录后无法使用怎么办
问题1:执行
docker run --rm -it stripe/stripe-cli:latest后docker ps看不到容器是否正常 这是完全正常的,原因有两点:
- 你执行的命令带了
--rm参数,该参数的作用是容器运行结束退出后自动删除容器实例,不会在本地残留已停止的容器 - 不加任何子命令直接运行stripe/stripe-cli镜像时,容器会执行默认的帮助命令,执行完成后直接退出,随即被
--rm参数清理,因此无论是默认只显示运行中容器的docker ps,还是显示所有历史容器的docker ps -a,都看不到对应的容器记录
问题2:登录成功后依然无法使用Stripe CLI的原因及解决方法
核心原因
你每次执行docker run都是创建一个全新的独立容器,登录操作生成的认证配置仅存储在当时执行login命令的临时容器中,容器运行结束后就被销毁了,后续新启动的容器没有读取到任何历史认证信息,因此无法正常使用。
解决步骤
你需要将Stripe CLI的配置目录持久化挂载到本地宿主机,保证所有容器实例共用同一份认证配置:
- 首次执行登录命令时添加卷挂载参数,将容器内的配置目录映射到本地:
docker run -it -v ~/.stripe-config:/root/.config/stripe stripe/stripe-cli login
按提示完成认证后,相关配置会永久存储在你本地的~/.stripe-config目录下
2. 后续所有执行Stripe CLI命令的操作,都需要携带相同的挂载参数,才能读取到已有的认证信息,示例:
# 示例:触发测试支付事件 docker run --rm -v ~/.stripe-config:/root/.config/stripe stripe/stripe-cli trigger payment_intent.succeeded
- (可选)简化调用命令:你可以为带挂载参数的命令设置shell别名,后续可以直接通过
stripe关键字调用,和本地直接安装CLI的使用体验完全一致
以zsh为例,在~/.zshrc文件中添加以下内容后执行source ~/.zshrc生效:
alias stripe="docker run --rm -v ~/.stripe-config:/root/.config/stripe stripe/stripe-cli"
设置完成后可直接执行如下命令:
stripe login stripe trigger invoice.paid
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

