部署成功后在 /var/app/current 目录下创建文件

Posted

技术标签:

【中文标题】部署成功后在 /var/app/current 目录下创建文件【英文标题】:Create File in /var/app/current directory after successful deployment 【发布时间】:2018-08-06 03:01:35 【问题描述】:

我正尝试在成功部署之后/var/app/current 目录中创建一个文件。我已经在.ebextensions 下创建了一个配置文件,但该文件没有被创建。我认为它总是被覆盖,因为文件首先在/tmp/deployment/application 签出。我不想在我的 VCS 中跟踪文件。

我的配置文件:

# .ebextensions/create_file.config
files:
  "/var/app/current/src/webapp/dist/testfile.html":
  mode: "000644"
  owner: nodejs
  group: nodejs
  content: |
    <!DOCTYPE html>
    <html lang="en">
    <head>
    </head>
    <body>
    <h1>foo</h1>
    <body>
    </html>

【问题讨论】:

如果您的完整文件夹不存在,您尝试创建它:commands: create_post_dir: command: "mkdir /var/app/current/src/webapp/dist/" ignoreErrors: true 【参考方案1】:

虽然the documentation 中没有明确说明,但所有.ebextensions 命令都在最终部署步骤之前运行。也就是说,它们都是在您的应用程序的新版本被部署到/var/app/ondeck 时但在该目录重命名为/var/app/current 之前执行的。

所以发生的情况是您的testfile.html 正在写入 目录/var/app/current,该目录后来被删除并替换为新目录/var/app/ondeck

没有官方支持的机制来执行命令目录移动后,但我(和许多其他人)使用an unofficial workaround。基本上,编写一个 shell 脚本来移动或创建您需要的文件并将其放入 /opt/elasticbeanstalk/hooks/appdeploy/post/

【讨论】:

谢谢布赖恩,在解决方法旁边,提供的线程中还有一些其他有价值的信息。

以上是关于部署成功后在 /var/app/current 目录下创建文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的部署目录不断变化

部署后无法在 EC2 上运行 command rails 控制台

Dockerrun.aws.json:没有这样的文件或目录

安装 puppeteer 2 弹性豆茎

Elastic Beanstalk 权限被拒绝

Nginx本地部署Vue项目