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

Docker Compose构建阶段Secrets缺失,无法访问问题求助

问题原因与解决方案

你的问题出在Dockerfile中没有显式挂载构建阶段的Secret。Compose配置里的build.secrets只是声明了要在构建阶段可用的Secret,但不会自动挂载到构建容器中,必须在Dockerfile的RUN指令里通过--mount=type=secret参数指定挂载路径。

修改后的Dockerfile示例

FROM python:3.7.2-alpine3.8

WORKDIR /app
# 挂载名为server_certificate的Secret到指定路径,查看内容并写入日志
RUN --mount=type=secret,id=server_certificate,dst=/run/secrets/server_certificate \
    ls -la /run/secrets >> build.log && \
    cat /run/secrets/server_certificate >> build.log
# 输出环境变量(Secret不会自动加入环境变量,需手动读取)
RUN env >> build.log

RUN /bin/sh

关键说明

  • 使用--mount=type=secret时,id必须和compose.yml中定义的Secret名称一致(此处为server_certificate)
  • dst指定Secret在构建容器中的挂载路径,默认路径是/run/secrets/<secret-name>,也可自定义
  • 若需要将Secret转为环境变量,可在RUN指令中读取:
    RUN --mount=type=secret,id=server_certificate \
        export CERT=$(cat /run/secrets/server_certificate) && \
        echo "CERT=$CERT" >> build.log
    

验证命令

重新执行构建并查看日志:

docker compose run --build frontend cat build.log

此时日志中会显示/run/secrets/server_certificate的文件信息以及Secret内容。

内容的提问来源于stack exchange,提问作者TBlackmore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:42:35