Docker Compose运行step-ca报undefined volume未定义卷错误如何解决
你的猜测完全正确,错误原因是没有在docker compose文件中显式声明用到的命名卷。
docker cli执行docker run命令时,如果指定的命名卷不存在,docker会自动为你创建;但docker compose的规则不同,所有在services配置中引用的命名卷,必须在yaml文件的顶级volumes字段中显式声明,否则就会抛出未定义卷的错误。
修正后的完整docker-compose.yml配置
version: "3.9" services: ca: image: smallstep/step-ca volumes: - "step:/home/step" environment: - DOCKER_STEPCA_INIT_NAME=Smallstep - DOCKER_STEPCA_INIT_DNS_NAMES=localhost,ubuntu ports: - "9000:9000" # 新增以下内容,声明服务用到的命名卷 volumes: step:
如果需要和原docker run命令保持一致,动态获取主机的完整域名而不是写死为ubuntu,可以按以下方式调整:
- 把环境变量行修改为:
- DOCKER_STEPCA_INIT_DNS_NAMES=localhost,${HOST_FQDN}
- 启动时执行命令:
HOST_FQDN=$(hostname -f) docker compose up -d
该使用场景完全合法,修正后的配置和原docker run命令的运行效果完全一致。
内容的提问来源于stack exchange,提问作者Connor Low
相关产品推荐
相关产品推荐

