【问题标题】:AWS ElasticBeanstalk SymlinkAWS ElasticBeanstalk 符号链接
【发布时间】:2017-10-29 08:20:39
【问题描述】:

我不想将我的 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

我可以在这里添加符号链接的东西吗

【问题讨论】:

    标签: ruby-on-rails amazon-elastic-beanstalk


    【解决方案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 条目将文件从/var/www复制/var/app/ondeck

    【讨论】:

      【解决方案2】:

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

      container_commands: 01symlink: command: sudo -u webapp ln -sf /var/www/database.yml ./config/database.yml

      【讨论】:

        【解决方案3】:

        一个更好更简单的解决方案是使用DATABASE_URL 环境变量到configure the database connection。这就是 Heroku 例如“神奇地”将您的应用程序连接到其 postgres 插件创建的数据库的方式。

        例如:

        postgresql://somehost/some_database?username=foo&password=bar
        

        只需在database.yml 中保留最低限度:

        default: &default
          adapter: postgresql
          encoding: unicode
          pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
        development:
          <<: *default
          database: myapp_development
        test:
          <<: *default
          database: myapp_test
        production:
          <<: *default
        

        这使得检查版本控制非常安全。

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

        【讨论】:

          猜你喜欢
          • 2015-01-29
          • 2020-09-21
          • 2014-10-20
          • 2017-01-31
          • 2018-05-07
          • 2014-07-06
          • 1970-01-01
          • 2017-09-13
          • 1970-01-01
          相关资源
          最近更新 更多