我正在考虑将 Rust 应用程序打包到 Docker 容器中。
该应用程序的当前版本包含用于通过服务帐户 key 注册到 Discord API 或 Google API 的各种凭据文件。
如果我这样打包我的应用程序,这些文件是否可以访问?
[编辑:添加 Dockerfile]
FROM rust:1.28.0
WORKDIR /usr/src/<application>
COPY . .
RUN cargo install --force --path .
CMD ["<application>"]
最佳答案
切勿将实际凭据放入您和只有您可能无法访问的任何内容中。
你基本上有两个选择:
1) 让您的应用程序从其环境中提取所需的凭据,然后在启动容器时设置这些变量。见 docs
2) 让您的应用程序从配置文件中读取凭据,该文件不会被拉入 docker 镜像。然后,在运行容器时,将该文件挂载到其中,参见 docs
您实际上可以同时做到这两个:拥有一个环境变量,告诉您的应用程序是否应该查找配置文件(可能在生产中),如果该变量未设置,请检查环境(用于开发)。
编辑:最佳实践是创建 .dockerignore
构建上下文中的文件,包含保存凭据的文件的名称(或路径)。
关于docker - Docker 镜像的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52369324/