Skip to content

Instantly share code, notes, and snippets.

@kimadactyl
Last active February 8, 2018 22:59
Show Gist options
  • Save kimadactyl/098d87c0a8abedf1bfa1 to your computer and use it in GitHub Desktop.
Save kimadactyl/098d87c0a8abedf1bfa1 to your computer and use it in GitHub Desktop.
Adventures in azk
/**
* Documentation: http://docs.azk.io/Azkfile.js
*/
// Adds the systems that shape your system
systems({
'taichi-school': {
// Dependent systems
depends: ["postgres"],
// More images: http://images.azk.io
image: {"docker": "azukiapp/ruby:2.3.0"},
// Steps to execute before running instances
provision: [
"bundle install --path /azk/bundler",
"bundle exec rake db:migrate RACK_ENV=production"
],
workdir: "/azk/#{manifest.dir}",
shell: "/bin/bash",
command: ["bundle", "exec", "puma", "-C", "./config/puma.rb"],
wait: 20,
mounts: {
'/azk/#{manifest.dir}': sync("."),
'/azk/bundler': persistent("./bundler"),
'/azk/#{manifest.dir}/tmp': persistent("./tmp"),
'/azk/#{manifest.dir}/log': path("./log"),
'/azk/#{manifest.dir}/.bundle': path("./.bundle"),
},
scalable: {"default": 1},
http: {
domains: [
'#{env.HOST_DOMAIN}', // used if deployed
'#{env.HOST_IP}', // used if deployed
"#{system.name}.#{azk.default_domain}"
]
},
ports: {
// exports global variables
http: "3000/tcp"
},
envs: {
// Make sure that the PORT value is the same as the one
// in ports/http below, and that it's also the same
// if you're setting it in a .env file
RAILS_ENV: "production",
RACK_ENV: "production",
WORKER_EMBEDDED: "false",
WORKER_RETRY: 1,
BUNDLE_APP_CONFIG: "/azk/bundler",
SECRET_KEY_BASE: "5aa0ede185b1ee9e004ed26756264b3a5474eb254798dacc14e2aef95c91fd0c306576d2d8010628dfb9cfe2426eef9d931f2ecd0ba4505bfed5e0fbf010e2ef"
},
},
postgres: {
// Dependent systems
depends: [],
// More images: http://images.azk.io
image: {"docker": "azukiapp/postgres:9.4"},
shell: "/bin/bash",
wait: 20,
mounts: {
'/var/lib/postgresql/data': persistent("#{system.name}-data"),
},
ports: {
// exports global variables
data: "5432/tcp",
},
envs: {
// set instances variables
POSTGRES_USER: "azk",
POSTGRES_PASS: "azk",
POSTGRES_DB: "taichi_live",
},
export_envs: {
// check this gist to configure your database
// https://gist.github.com/gullitmiranda/62082f2e47c364ef9617
DATABASE_URL: "postgres://#{envs.POSTGRES_USER}:#{envs.POSTGRES_PASS}@#{net.host}:#{net.port.data}/${envs.POSTGRES_DB}",
RACK_ENV: "production"
},
},
deploy: {
image: { docker: 'azukiapp/deploy-digitalocean' },
mounts: {
'/azk/deploy/src': path('.'),
'/azk/deploy/.ssh': path('#{env.HOME}/.ssh'), // Required to connect with the remote server
'/azk/deploy/.config': persistent('deploy-config')
},
// This is not a server. Just run it with `azk deploy`
scalable: { default: 0, limit: 0 },
envs: {
// List with all available deployment settings:
// https://github.com/azukiapp/docker-deploy-digitalocean/blob/master/README.md
RAILS_ENV: "production",
RACK_ENV: "production",
GIT_REF: 'add-azk',
AZK_RESTART_COMMAND: 'azk restart -Rvv',
BOX_REGION: 'lon1',
BOX_NAME: 'taichi-school-azk',
HOST_DOMAIN: 'beta.taichi.school',
}
},
});
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Do not eager load code on boot.
config.eager_load = false
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :test
host = 'localhost:3000'
config.action_mailer.default_url_options = { host: host }
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
# yet still be able to expire them through the digest params.
config.assets.digest = true
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
# Raises helpful error messages.
config.assets.raise_runtime_errors = true
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
# LiveReload
config.middleware.insert_after ActionDispatch::Static, Rack::LiveReload
end
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
config.cache_classes = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both threaded web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
# Full error reports are disabled and caching is turned on.
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Enable Rack::Cache to put a simple HTTP cache in front of your application
# Add `rack-cache` to your Gemfile before enabling this.
# For large-scale production use, consider using a caching reverse proxy like
# NGINX, varnish or squid.
# config.action_dispatch.rack_cache = true
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
# yet still be able to expire them through the digest params.
config.assets.digest = true
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
# Specifies the header that your server uses for sending files.
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = false
# Use the lowest log level to ensure availability of diagnostic information
# when problems arise.
config.log_level = :debug
# Prepend all log lines with the following tags.
# config.log_tags = [ :subdomain, :uuid ]
# Use a different logger for distributed setups.
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
# Use a different cache store in production.
# config.cache_store = :mem_cache_store
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = 'http://assets.example.com'
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
# host = "taichi-school.herokuapp.com"
# config.action_mailer.default_url_options = { host: host }
# ActionMailer::Base.smtp_settings = {
# :address => "smtp.sendgrid.net",
# :port => "587",
# :authentication => "plain",
# :user_name => ENV['SENDGRID_USERNAME'],
# :password => ENV['SENDGRID_PASSWORD'],
# :domain => "heroku.com",
# :enable_starttls_auto => true
# }
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
# Send deprecation notices to registered listeners.
config.active_support.deprecation = :notify
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment