☰
Infisical 密钥管理部署实操:Docker Compose 三步起服务,从容器到密钥注入全打通
2026/10/6 1:02:26 网站建设 项目流程

Infisical 密钥管理部署实操:Docker Compose 三步起服务,从容器到密钥注入全打通

【免费下载链接】infisicalInfisical is the open-source platform for secrets, certificates, and privileged access management.项目地址: https://gitcode.com/GitHub_Trending/in/infisical

把散落在配置文件、聊天记录和 CI 流水线里的密钥统一收进一个平台,还要自己掌控数据和网络边界——这是 Infisical 想解决的问题。它是一款开源的密钥、证书与特权访问管理平台,内置版本控制、自动轮换和防泄露扫描;用 Docker Compose 起一套自托管实例通常只需要几分钟,装好 Docker 就能跑,无需额外依赖。下面按「准备环境 → 起服务 → 验证 → 把密钥接进应用」的顺序走一遍,全程只涉及几条命令和一份环境变量文件。

一、动手之前:三个前置条件

条件说明检查方式
Docker Engine + Docker Compose部署依赖容器编排,Compose 负责一次拉起多个服务docker compose version
80 端口可用生产编排文件把宿主机 80 端口映射到服务,被占用会启动失败ss -ltn \| grep :80
一块能持久化的磁盘PostgreSQL 和 Redis 各挂一个命名卷,数据落在本机默认即可,无需配置

拿到仓库代码。两种方式任选:

git clone https://gitcode.com/GitHub_Trending/in/infisical cd infisical

或者直接在本机找一个已有的仓库目录。注意:自托管部署走的是 docker-compose.prod.yml,它会拉取官方打包镜像infisical/infisical:latest,不需要你在本地编译 backend 或 frontend 源码,省掉了一大堆构建步骤。

二、配置 .env:整个部署里唯一要"动手"的部分

仓库自带的 .env.example 是一份带默认值的模板,先把它复制出来:

cp .env.example .env

编排文件通过env_file: .env读取它,所以这一步不能省。翻一下这份文件,真正决定实例能不能跑起来的核心变量只有几项:

  • ENCRYPTION_KEY:平台加解密密钥,必须保留一个 64 位十六进制值(示例值仅限本地试验,生产环境请自行生成替换)
  • AUTH_SECRET:签发登录 JWT 用的密钥,同上
  • POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB:数据库凭据,模板默认都是infisical,可照用
  • DB_CONNECTION_URI:模板里已写死为postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB},指向编排网络内的db容器,不用改
  • SITE_URL:访问地址,模板默认http://localhost:8080
  • SMTP 相关:留空即可,实例能正常登录,只是站内通知发不出去

其他如 GitHub/GitLab 集成、Sentry 监控等变量都按需填写,本地跑通全部留空没有任何问题。

三、一键启动:一条命令拉起三件套

docker compose -f docker-compose.prod.yml up

命令执行后,Compose 会同时启动三个容器:

  • infisical-backend:主服务,Web 界面和 API 都由它提供,对外只暴露 80 端口
  • infisical-db:postgres:14-alpine,存密钥元数据和账号信息,挂了pg_isready健康检查,编排文件里 backend 会等它报告 healthy 才启动
  • infisical-dev-redis:Redis,承担缓存与队列,配了ALLOW_EMPTY_PASSWORD=yes用于内网互通

首次运行要拉取镜像,耗时取决于网络;之后看到infisical-backend | listening之类的日志输出,说明后端已经就绪。

四、三分钟确认部署成功

  1. 浏览器访问http://localhost:80,首次进入是注册引导页——创建管理员账号,随后按提示初始化组织和第一个项目。能走到这一步,数据库初始化、前端静态资源、后端 API 三个环节就全部打通了。
  2. 回到终端,用docker compose -f docker-compose.prod.yml ps看一眼状态:backend 应为running,db 应为running (healthy)。
  3. 有东西不对劲时,docker compose -f docker-compose.prod.yml logs -f backend看实时日志,八成能直接定位到原因。

五、从控制台到容器:给应用接上密钥

5.1 在控制台建好第一个密钥

登录后点New Project建一个项目(比如my-first-project),选定环境(development / production 等),然后Add Secret填入DB_PASSWORD和对应值,保存。接下来在项目的 Token 入口创建一个作用域限定在该环境的 Token——它就是应用访问密钥的"门禁卡",泄露风险远低于直接分发密钥本身。

5.2 用 CLI 把密钥注入容器

官方文档里给了一条最省事的接入路径:在应用镜像里装 Infisical CLI,启动时自动拉取密钥并注入为环境变量。以 Alpine 基础镜像为例:

FROM alpine # 安装 Infisical CLI(Alpine 版) RUN apk add --no-cache bash sudo wget && wget -qO- \ 'https://artifacts-cli.infisical.com/setup.apk.sh' | sh \ && apk add infisical COPY . /app WORKDIR /app # 启动命令前缀 infisical run,密钥自动注入为环境变量 CMD ["infisical", "run", "--", "npm run start"]

构建并运行时,把 5.1 里创建的 Token 通过INFISICAL_TOKEN环境变量传进去:

docker build -t my-app . docker run --env INFISICAL_TOKEN=<your_token> my-app

容器里的应用代码一行不用改,process.env.DB_PASSWORD之类就能直接读到值。Debian/Ubuntu、RHEL 系基础镜像对应的安装写法,都收录在 docs/documentation/getting-started/docker.mdx 里,照抄即可。

六、跑起来之后,这些能力值得单独体验

密钥版本控制与定点恢复:每次修改密钥都会留痕,支持回看历史版本、对比差异,还能做 Point-in-Time Recovery,误操作把密钥改坏了可以直接回滚到某个时间点。相关说明见 secret-versioning 与 pit-recovery。

密钥轮换与泄露扫描:平台可对 PostgreSQL、MySQL、AWS IAM 等服务的凭据做定期自动轮换;CLI 侧的infisical scan能扫描文件、目录和 git 仓库里 140 多种密钥类型,infisical scan install --pre-commit-hook装好钩子后,密钥在 push 前就会被拦下来,从源头防泄露。用法见 cli/scanning-overview。

细粒度访问控制:项目成员可以按只读/编辑/管理分配权限,机器身份则支持 RBAC、临时访问、审批工作流等更细的授权方式,审计日志记录平台上每一次操作。

七、翻车现场自救手册

现象先查什么
页面打不开,backend 反复重启docker compose -f docker-compose.prod.yml ps看 db 是否达到healthy——backend 会等数据库健康检查通过才启动,数据库起不来它就一直卡着
容器直接起不来docker compose -f docker-compose.prod.yml logs -f看报错;九成是.env没复制或ENCRYPTION_KEY/AUTH_SECRET被清空
应用里读不到密钥依次核对:INFISICAL_TOKEN是否传入、Token 作用域是否覆盖目标环境、启动命令是否带了infisical run前缀
想清空重来docker compose -f docker-compose.prod.yml down停止服务;数据卷pg_data、redis_data删掉后重新up即为全新实例

更多部署选项(Kubernetes Helm、单机裸金属、云上托管)和加固建议,在 self-hosting/overview.mdx 里有完整清单。

八、延伸:继续深入的方向

  • CLI 全部子命令与infisical run的进阶用法:docs/cli/usage.mdx
  • 把 Infisical 接到 Kubernetes 负载上:helm-charts/ 下提供了官方 Chart
  • 想用 API 而不是控制台操作:docs/api-reference/ 覆盖全部接口
  • 密钥同步到 GitHub、Vercel、AWS 等平台的集成清单:docs/integrations/

到这里,一套跑在自己机器上的开源密钥管理平台就完整落地了:三容器编排、一个.env、三条命令,之后的事情——建密钥、发 Token、接应用——都在控制台里点完。

【免费下载链接】infisicalInfisical is the open-source platform for secrets, certificates, and privileged access management.项目地址: https://gitcode.com/GitHub_Trending/in/infisical

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询