【问题标题】:Docker & Amazon Beanstalk - Deploy an Angular applicationDocker 和 Amazon Beanstalk - 部署 Angular 应用程序
【发布时间】:2016-07-02 17:56:28
【问题描述】:

我正在尝试部署一个 dist 文件夹,该文件夹由 Gulp 使用 Dockerfile 和 Amazon EB 通过版本控制生成。

当我运行 eb deploy 时失败:

COPY dist /var/www/html dist: 没有这样的文件或目录。检查快照日志以获取详细信息。挂钩 /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh 失败。有关更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。

这是因为 dist 目录不受源代码控制吗?如果是这样,在仍然使用我的 docker 文件部署和配置应用程序的同时将 dist 目录传输到 EB 的最佳方法是什么?

下面是我的 Dockerfile:

FROM nimmis/apache-php5

COPY dist /var/www/html
WORKDIR /var/www/html

EXPOSE 80 

【问题讨论】:

  • 最好的方法是将静态资产直接部署到 S3 或更好的云端,而不是让您的 EB 为它们提供服务
  • 我被误认为它是一个静态站点,因为我需要运行 PHP 才能为我的站点生成一个共享页面。相反,我选择通过 Beanstalk 部署工件。感谢您的帮助。

标签: amazon-web-services docker amazon-elastic-beanstalk aws-cli


【解决方案1】:

如果你真的想要 docker 镜像中的 dist 文件,那么安装 gulp 并运行命令在 Dockerfile 中生成 dist 文件夹。

查看 Dockerfile 的 RUN 命令

【讨论】:

  • 这是另一种选择,尽管我想要一个更干净的部署目录。我转而通过 Beanstalk 部署工件:docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 感谢您的帮助!
  • 您好,感谢您的建议,我想问一下为什么我们需要在 docker 中构建它,我的意思是如果我们只是添加文件夹,构建 docker 映像不会更快,也许添加一个 npm 安装?我想是由于一些类似的烫发操作系统,你能告诉我为什么是最佳做法吗?
【解决方案2】:

我认为我对 eb deploy 的理解是问题所在。答案是使用 bash 脚本压缩 dist 目录以及其他文件,并为 config.yml 文件创建我自己的工件:

例如

dist(应用程序文件) 配置(php.ini 和 000-default.conf) Dockerfile

然后将目录添加到config.yml:

deploy:
artifact: dist.zip

然后我可以编写一个 bash 脚本来创建一个版本号标签,然后部署到 Beanstalk:

eb deploy --staged --label {version_number}

【讨论】:

    猜你喜欢
    • 2017-03-25
    • 2013-01-20
    • 2014-03-31
    • 2012-07-04
    • 1970-01-01
    • 2018-12-07
    • 2013-06-25
    • 2014-12-13
    • 2021-12-16
    相关资源
    最近更新 更多