Rails 备份:生成备份模型不是 运行 Dokku
Rails Backup: Generating Backup Model not running with Dokku
使用 Backup gem 进行数据库备份,将安装了 gem 的应用程序部署到 DigitalOcean,下一步是 运行 使用
dokku run oktob bundle exec backup generate:model --trigger oktob_db_backup --databases="postgresql" --storages="dropbox" --encryptors="openssl" --compressors="gzip" --notifiers="mail"
这应该创建配置文件来设置备份,但它returns什么都没有。
当我在本地机器上 运行 生成器时,会正常生成 2 个文件,但这次没有使用 dokku run oktob
,因为它在本地机器上。
Generated model file: '/Users/ahmadajmi/Backup/models/oktob_db_backup.rb'.
Generated configuration file: '/Users/ahmadajmi/Backup/config.rb'.
谢谢
这是一个没有答案的问题,但对于评论来说太长了。
你通常会遇到这样的问题,即新创建的文件不会持久化,因为 dokku run
东西 会启动一个新容器 (然后直接到达它的生命的尽头)。
您可以使用 dokku-volume 插件指定一个 "lives" 在您的应用程序容器之外的目录,并保持文件原样。
为了解决这个问题,备份 gem 应该安装在 Linux 机器的应用程序容器之外。
Backup generator 命令用于生成备份配置文件。
backup generate:model --trigger oktob_database_backup --databases="postgresql" --storages="s3" --compressor="gzip" --notifiers="mail"
这将在Linux机器中创建备份配置文件/root/Backup/models/oktob_database_backup.rb
,与Dokku或应用程序容器无关,该文件包含一些与数据库连接、S3信息相关的必需配置和用于发送通知的电子邮件帐户。
/root/Backup/models/oktob_database_backup.rb
文件包含:
# encoding: utf-8
##
# Backup Generated: oktob_db_backup
# Once configured, you can run the backup with the following command:
#
# $ backup perform -t oktob_db_backup [-c <path_to_configuration_file>]
#
# For more information about Backup's components, see the documentation at:
# http://backup.github.io/backup
#
Model.new(:oktob_database_backup, 'Oktob Production Database Backup') do
##
# PostgreSQL [Database]
#
database PostgreSQL do |db|
db.name = ENV['DATABASE_NAME']
db.username = ENV['DATABASE_USERNAME']
db.password = ENV['DATABASE_PASSWORD']
db.host = ENV['DATABASE_HOST']
db.port = ENV['DATABASE_PORT']
end
##
# Amazon Simple Storage Service [Storage]
#
store_with S3 do |s3|
# AWS Credentials
s3.access_key_id = ENV['AWS_ACCESS_KEY_ID']
s3.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
s3.region = "us-west-2"
s3.bucket = ENV['AWS_DATABASE_BACKUP_BUCKET_NAME']
s3.path = "/"
end
##
# Gzip [Compressor]
#
compress_with Gzip
##
# Mail [Notifier]
#
# The default delivery method for Mail Notifiers is 'SMTP'.
# See the documentation for other delivery options.
#
notify_by Mail do |mail|
mail.on_success = true
mail.on_warning = true
mail.on_failure = true
mail.from = ENV['EMAIL_ADDRESS']
mail.to = ENV['EMAIL_ADDRESS']
mail.address = "smtp.gmail.com"
mail.port = 587
mail.domain = "oktob.io"
mail.user_name = ENV['SMTP_USERNAME']
mail.password = ENV['SMTP_PASSWORD']
mail.authentication = "plain"
mail.encryption = :starttls
end
end
配置存储在 /etc/environment
文件中:
## Database
export DATABASE_NAME=''
export DATABASE_USERNAME=''
export DATABASE_PASSWORD=''
export DATABASE_HOST=''
export DATABASE_PORT=''
## Amazon S3
export AWS_ACCESS_KEY_ID=''
export AWS_SECRET_ACCESS_KEY=''
export AWS_DATABASE_BACKUP_BUCKET_NAME=''
## Email
export EMAIL_ADDRESS=''
export SMTP_USERNAME=''
export SMTP_PASSWORD=''
要手动执行备份,我们可以输入 backup perform -t oktob_database_backup
,此命令将做 3 件事:
- 远程连接到 Postgres Dokku 容器并进行数据库转储
- 正在将 abckup 文件存储到
oktob-database-backup
S3 存储桶中。
- 发送电子邮件通知至
EMAIL_ADDRESS
使用 cron 作业每隔一小时进行一次备份,此作业在 crontab -e
中添加为:
0 * * * * /bin/bash -l -c '/usr/local/rvm/gems/ruby-2.0.0-p647/bin/backup perform -t oktob_database_backup'
我们可以通过在命令行中输入which backup
来获取/usr/local/rvm/gems/ruby-2.0.0-p647/bin/backup
部分,以获取路径。
要检查的好文章:
使用 Backup gem 进行数据库备份,将安装了 gem 的应用程序部署到 DigitalOcean,下一步是 运行 使用
dokku run oktob bundle exec backup generate:model --trigger oktob_db_backup --databases="postgresql" --storages="dropbox" --encryptors="openssl" --compressors="gzip" --notifiers="mail"
这应该创建配置文件来设置备份,但它returns什么都没有。
当我在本地机器上 运行 生成器时,会正常生成 2 个文件,但这次没有使用 dokku run oktob
,因为它在本地机器上。
Generated model file: '/Users/ahmadajmi/Backup/models/oktob_db_backup.rb'.
Generated configuration file: '/Users/ahmadajmi/Backup/config.rb'.
谢谢
这是一个没有答案的问题,但对于评论来说太长了。
你通常会遇到这样的问题,即新创建的文件不会持久化,因为 dokku run
东西 会启动一个新容器 (然后直接到达它的生命的尽头)。
您可以使用 dokku-volume 插件指定一个 "lives" 在您的应用程序容器之外的目录,并保持文件原样。
为了解决这个问题,备份 gem 应该安装在 Linux 机器的应用程序容器之外。
Backup generator 命令用于生成备份配置文件。
backup generate:model --trigger oktob_database_backup --databases="postgresql" --storages="s3" --compressor="gzip" --notifiers="mail"
这将在Linux机器中创建备份配置文件/root/Backup/models/oktob_database_backup.rb
,与Dokku或应用程序容器无关,该文件包含一些与数据库连接、S3信息相关的必需配置和用于发送通知的电子邮件帐户。
/root/Backup/models/oktob_database_backup.rb
文件包含:
# encoding: utf-8
##
# Backup Generated: oktob_db_backup
# Once configured, you can run the backup with the following command:
#
# $ backup perform -t oktob_db_backup [-c <path_to_configuration_file>]
#
# For more information about Backup's components, see the documentation at:
# http://backup.github.io/backup
#
Model.new(:oktob_database_backup, 'Oktob Production Database Backup') do
##
# PostgreSQL [Database]
#
database PostgreSQL do |db|
db.name = ENV['DATABASE_NAME']
db.username = ENV['DATABASE_USERNAME']
db.password = ENV['DATABASE_PASSWORD']
db.host = ENV['DATABASE_HOST']
db.port = ENV['DATABASE_PORT']
end
##
# Amazon Simple Storage Service [Storage]
#
store_with S3 do |s3|
# AWS Credentials
s3.access_key_id = ENV['AWS_ACCESS_KEY_ID']
s3.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
s3.region = "us-west-2"
s3.bucket = ENV['AWS_DATABASE_BACKUP_BUCKET_NAME']
s3.path = "/"
end
##
# Gzip [Compressor]
#
compress_with Gzip
##
# Mail [Notifier]
#
# The default delivery method for Mail Notifiers is 'SMTP'.
# See the documentation for other delivery options.
#
notify_by Mail do |mail|
mail.on_success = true
mail.on_warning = true
mail.on_failure = true
mail.from = ENV['EMAIL_ADDRESS']
mail.to = ENV['EMAIL_ADDRESS']
mail.address = "smtp.gmail.com"
mail.port = 587
mail.domain = "oktob.io"
mail.user_name = ENV['SMTP_USERNAME']
mail.password = ENV['SMTP_PASSWORD']
mail.authentication = "plain"
mail.encryption = :starttls
end
end
配置存储在 /etc/environment
文件中:
## Database
export DATABASE_NAME=''
export DATABASE_USERNAME=''
export DATABASE_PASSWORD=''
export DATABASE_HOST=''
export DATABASE_PORT=''
## Amazon S3
export AWS_ACCESS_KEY_ID=''
export AWS_SECRET_ACCESS_KEY=''
export AWS_DATABASE_BACKUP_BUCKET_NAME=''
## Email
export EMAIL_ADDRESS=''
export SMTP_USERNAME=''
export SMTP_PASSWORD=''
要手动执行备份,我们可以输入 backup perform -t oktob_database_backup
,此命令将做 3 件事:
- 远程连接到 Postgres Dokku 容器并进行数据库转储
- 正在将 abckup 文件存储到
oktob-database-backup
S3 存储桶中。 - 发送电子邮件通知至
EMAIL_ADDRESS
使用 cron 作业每隔一小时进行一次备份,此作业在 crontab -e
中添加为:
0 * * * * /bin/bash -l -c '/usr/local/rvm/gems/ruby-2.0.0-p647/bin/backup perform -t oktob_database_backup'
我们可以通过在命令行中输入which backup
来获取/usr/local/rvm/gems/ruby-2.0.0-p647/bin/backup
部分,以获取路径。
要检查的好文章: