gpt4 book ai didi

docker - 如何从docker文件中隐藏环境变量

转载 作者:行者123 更新时间:2023-12-05 02:36:08 29 4
gpt4 key购买 nike

我有一个 Dockerfile ,用于部署带有一些 secret api key 的节点 js 应用程序,我想从 docker 文件中隐藏它。目前我正在使用 ENV 关键字来定义环境变量,如下所示

FROM node:17
WORKDIR /usr/app
COPY package.json /usr/app/
RUN npm install
COPY . /usr/app
ENV TWILIO_ACCOUNT_SID=""
ENV TWILIO_AUTH_TOKEN=""
ENV OTP_TEXT="This is your Otp"
ENV TWILLIO_SENDER=99999
ENV PORT=8080
ENV DB_URL=""
ENV JWT_SECRET="Some Secrete"
ENV JWT_EXPIRES_IN=30min
ENV OTP_EXPIRE_TIME_SECONDS=150000
ENV AWS_S3_REGION = us-east-2
ENV AWS_S3_BUCKET = gos32
ENV AWS_ACCESS_KEY_ID =""
ENV AWS_SECRET_ACCESS_KEY =""
CMD ["npm", "start"]

有什么更好的方法吗?

编辑:

只需添加@blami 给出的答案对我有用

docker build -t  app . 

然后我跑了

docker run --env-file env.txt  -d -p 8080:8080  app

将所有环境变量放入 env.txt 文件后,docker 使用 file 选项运行

最佳答案

您根本不应该将敏感数据放入 Dockerfile。如果您的应用程序是通过环境配置的,您应该只在容器启动时将这些变量提供给容器,例如手动(使用 docker -e--env--env-file 标志直接在命令行) 或通过您的容器运行时(您未在问题中指定):

  • Kubernetes 可以管理 secret 并通过文件或环境变量公开它们 - 参见 documentation with examples
  • Docker Swarm 支持通过 docker secret 命令开箱即用地管理 secret ,并且也可以将此类 secret 公开为环境变量 - 参见 documentation with examples
  • 托管云提供商通常可以选择管理 secret 并以某种方式也将它们注入(inject)容器(或直接公开他们使用的运行时的功能)。

在上述任何一种情况下, secret 通常都保存在安全存储中,只有在容器启动并注入(inject)其中时才会从那里检索它们。这样你就不需要将它们放在 Dockerfile 中。请注意,如果有人以应用程序或更高权限访问您正在运行的容器,他们将能够从环境中检索 secret (因为这就是环境变量的工作方式)。

关于docker - 如何从docker文件中隐藏环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70359588/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com