AWS ElasticBeanstalk符号链接

时间:2017-05-29 05:55:30

标签: ruby-on-rails elastic-beanstalk

我不想将我的config / database.yml文件放在GITHUB中,而是将它放在某个地方并按照下面的方式进行符号链接

config / databse.yml - > /var/www/database.yml

在.elasticbeanstalk / 00packages.config中,我有以下内容

commands:
  # install WKHTML
  03_command:
    command: yum install xz urw-fonts libXext openssl-devel libXrender
  04_command:
    command: wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
  05_command:
    command: tar -xJf wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
  06_command:
    command: cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
  07_command:
    command: cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/wkhtmltoimage

我可以在这里添加符号链接,并且可以正常工作

3 个答案:

答案 0 :(得分:1)

不幸的是,EB自定义配置都不允许您在部署应用程序后执行操作。在commands运行时,您的应用仍然在/var/app/ondeck,因此如果您在/var/app/current下创建符号链接,则会在ondeck重命名为时将其删除current

我知道的唯一解决此限制的方法是将文件放入appdeploy/post hooks目录。在你的情况下,它看起来像这样:

<强> .ebextensions / 01symlink.config

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_create_symlink.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      ln -sf /var/www/database.yml /var/app/current/config/database.yml

或者,在部署期间,您可以使用commands条目<{1}}将文件从/var/www复制到/var/app/ondeck

答案 1 :(得分:0)

我能够使用ConfigureServices和一个相对路径创建符号链接,该路径默认是您应用的根目录。尽管container_commands目录不存在,但是您可以创建一个符号链接,部署完成后它将被移动到/var/app/current。例如:

/var/app/current

答案 2 :(得分:0)

一种更好,更简单的解决方案是将<?php namespace App\Notifications; use App\Contact; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Notification; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; class SendContactNotification extends Notification implements ShouldQueue { use Queueable; protected $contact; /** * Create a new notification instance. * * @param $contact */ public function __construct(Contact $contact) { $this->contact = $contact; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['mail']; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { return (new MailMessage) ->line($this->contact->name) ->line($this->contact->email) ->line($this->contact->message); } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ public function toArray($notifiable) { return [ // ]; } } 环境变量用于configure the database connection。例如,Heroku就是这样“神奇地”将您的应用程序连接到由其postgres插件创建的数据库。

例如:

DATABASE_URL

只需在postgresql://somehost/some_database?username=foo&password=bar 中保留最低要求:

database.yml

这使得签入版本控制非常安全。

然后通过environmental properties on AWS设置环境变量。