我有一个 Dockerfile,用于部署带有一些秘密 api 密钥的 Node 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"]
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
编辑 :
只需添加 @blami 给出的答案中的“什么对我有用”
docker build -t app .
Run Code Online (Sandbox Code Playgroud)
然后我跑了
docker run --env-file env.txt -d -p 8080:8080 app
Run Code Online (Sandbox Code Playgroud)
将所有环境变量放入env.txt文件后,使用文件选项运行 docker
您根本不应该将敏感数据放入 Dockerfile 中。如果您的应用程序是通过环境配置的,则您应该仅在容器启动时向容器提供这些变量,例如手动(使用docker -e、--env和--env-file标志)或通过容器运行时(您在问题中未指定):
docker secret,并且也可以将此类机密公开为环境变量 - 请参阅带有示例的文档在任何情况下,上述秘密通常都存在于安全存储中,只有当容器启动并注入其中时,才会从那里检索它们。这样你就不需要将它们放在 Dockerfile 中。请注意,如果有人使用应用程序或更高权限访问您正在运行的容器,他们将能够从环境中检索机密(这就是环境变量的工作方式)。
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |