gpt4 book ai didi

laravel - 在 Docker 中为 AWS Elastic Beanstalk 构建期间访问 .env 变量

转载 作者:行者123 更新时间:2023-12-02 19:14:44 27 4
gpt4 key购买 nike

我正在使用 AWS Elastic Beanstalk 上的 Docker 平台部署 Laravel 应用程序。我的 Dockerfile 中的步骤之一是使用 Laravel mix 通过运行 npm run production 来捆绑 Assets 。如下所示。

# Dockerfile
...
RUN echo "${ALPINE_MIRROR}/edge/main" >> /etc/apk/repositories \
&& apk add --no-cache nodejs nodejs-npm --repository="http://dl-cdn.alpinelinux.org/alpine/edge/community" \
&& npm install \
&& npm run production
当此命令运行时,它触发的步骤之一是将生成的 Assets 复制到 Amazon S3,如下所示:
mix.webpackConfig({
plugins: [
new s3Plugin({
exclude: /.*\.(html|php|htaccess|txt|json)/,
s3Options: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_DEFAULT_REGION,
},
s3UploadOptions: {
Bucket: process.env.AWS_BUCKET,
},
directory: 'public',
})
]
});
如上所示,该脚本需要 AWS 环境变量才能工作。但是,即使在 Elastic Beanstalk 仪表板(在配置中)中配置了它们,构建脚本也不会选择它们。一种快速解决方法是定义 ARG Dockerfile 中的变量,但我不希望这些信息以纯文本形式显示。
我试图四处寻找解决方案,但我没有运气。任何建议都会很有帮助。谢谢你。

最佳答案

我设法通过本指南的帮助实现了我所需要的:
https://aws.amazon.com/blogs/security/how-to-manage-secrets-for-amazon-ec2-container-service-based-applications-by-using-amazon-s3-and-docker/
基本上:

  • 创建存储桶以存储包含所需变量的文件。
  • 设置存储桶策略以限制对同一 VPC 内的访问
  • 在 Dockerfile 中,执行下载此文件并加载环境变量的脚本。

  • 谢谢!

    关于laravel - 在 Docker 中为 AWS Elastic Beanstalk 构建期间访问 .env 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64101681/

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