348 lines
9.8 KiB
Ruby
348 lines
9.8 KiB
Ruby
namespace :service do
|
|
ENV['APP_DOMAIN'] = @config['app']['domain']
|
|
|
|
@switch = Proc.new do |args, start, stop|
|
|
case args.command
|
|
when 'start'
|
|
start.call
|
|
when 'stop'
|
|
stop.call
|
|
when 'restart'
|
|
stop.call
|
|
start.call
|
|
else
|
|
puts "unknown command #{args.command}"
|
|
end
|
|
end
|
|
|
|
desc 'Run Traefik (reverse-proxy)'
|
|
task :proxy, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting the proxy -----'
|
|
File.new('config/acme.json', File::CREAT, 0600) unless File.exist? 'config/acme.json'
|
|
sh 'docker-compose up -d proxy'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping the proxy -----'
|
|
sh 'docker-compose rm -fs proxy'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc 'Run backend (vault db redis rabbitmq)'
|
|
task :backend, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting dependencies -----'
|
|
sh 'docker-compose up -d vault db redis rabbitmq'
|
|
sleep 7 # time for db to start, we can get connection refused without sleeping
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping dependencies -----'
|
|
sh 'docker-compose rm -fs vault db redis rabbitmq'
|
|
end
|
|
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc 'Run influxdb'
|
|
task :influxdb, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting influxdb -----'
|
|
sh 'docker-compose up -d influxdb'
|
|
puts 'Wait 5 second for influx'
|
|
sleep(5)
|
|
sh 'docker-compose exec influxdb bash -c "cat peatio.sql | influx"'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping influxdb -----'
|
|
sh 'docker-compose rm -fs influxdb'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc '[Optional] Run arke-maker'
|
|
task :arke_maker, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting arke -----'
|
|
sh 'docker-compose up -d arke-maker'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping arke -----'
|
|
sh 'docker-compose rm -fs arke-maker'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc '[Optional] Run daemons (rango, peatio daemons, barong sidekiq)'
|
|
task :daemons, [:command] do |_task, args|
|
|
@daemons = %w[rango blockchain cron_job upstream deposit deposit_coin_address withdraw_coin influx_writer barong_sidekiq]
|
|
|
|
if @config['finex']['enabled']
|
|
@daemons |= %w[finex-engine finex-api]
|
|
else
|
|
@daemons |= %w[matching order_processor trade_executor]
|
|
end
|
|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting daemons -----'
|
|
sh "docker-compose up -d #{@daemons.join(' ')}"
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping daemons -----'
|
|
sh "docker-compose rm -fs #{@daemons.join(' ')}"
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc '[Optional] Run cryptonodes'
|
|
task :cryptonodes, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting cryptonodes -----'
|
|
sh 'docker-compose up -d parity'
|
|
if @config['bitcoind']['enabled']
|
|
sh 'docker-compose up -d bitcoind'
|
|
end
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping cryptonodes -----'
|
|
sh 'docker-compose rm -fs parity'
|
|
if @config['bitcoind']['enabled']
|
|
sh 'docker-compose rm -fs bitcoind'
|
|
end
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc 'Run setup hooks for peatio, barong'
|
|
task :setup, [:command] => ['vault:setup', 'vault:load_policies'] do |task, args|
|
|
if args.command != 'stop'
|
|
Rake::Task["render:config"].execute
|
|
puts '----- Running hooks -----'
|
|
sh 'docker-compose run --rm peatio bash -c "./bin/link_config && bundle exec rake db:create db:migrate"'
|
|
sh 'docker-compose run --rm peatio bash -c "./bin/link_config && bundle exec rake db:seed"'
|
|
sh 'docker-compose run --rm barong bash -c "./bin/init_config && bundle exec rake db:create db:migrate"'
|
|
sh 'docker-compose run --rm barong bash -c "./bin/link_config && bundle exec rake db:seed"'
|
|
if ENV.fetch('FIBITEX_SEED_TEST_USERS', 'true') != 'false'
|
|
puts '----- Seeding test users and balances -----'
|
|
sh 'docker-compose run --rm barong bash -c "bundle exec rails runner ./lib/seed_test_users.rb"'
|
|
sh 'docker-compose run --rm peatio bash -c "ruby ./bin/link_config && bundle exec rails runner ./lib/seed_test_balances.rb"'
|
|
end
|
|
end
|
|
end
|
|
|
|
desc 'Run mikro app (barong, peatio)'
|
|
task :app, [:command] => [:backend, :setup] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting app -----'
|
|
sh 'docker-compose up -d peatio barong gateway'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping app -----'
|
|
sh 'docker-compose rm -fs peatio barong gateway'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc 'Run the frontend application'
|
|
task :frontend, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting the frontend -----'
|
|
sh 'docker-compose up -d frontend'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping the frontend -----'
|
|
sh 'docker-compose rm -fs frontend'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc 'Run the tower application'
|
|
task :AdminTower, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting the AdminTower -----'
|
|
sh 'docker-compose up -d AdminTower'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping the AdminTower -----'
|
|
sh 'docker-compose rm -fs AdminTower'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc 'Run Mailer'
|
|
task :mailer, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting Mailer -----'
|
|
sh 'docker-compose up -d mailer'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping Mailer -----'
|
|
sh 'docker-compose rm -fs mailer'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc '[Optional] Run monitoring'
|
|
task :monitoring, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting monitoring -----'
|
|
sh 'docker-compose up -d prometheus'
|
|
sh 'docker-compose up -d grafana'
|
|
sh 'docker-compose up -d alertmanager'
|
|
sh 'docker-compose up -d loki'
|
|
sh 'docker-compose up -d promtail'
|
|
sh 'docker-compose up -d scope'
|
|
sh 'docker-compose up -d node-exporter'
|
|
sh 'docker-compose up -d cadvisor'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping monitoring -----'
|
|
sh 'docker-compose rm -fs prometheus'
|
|
sh 'docker-compose rm -fs grafana'
|
|
sh 'docker-compose rm -fs alertmanager'
|
|
sh 'docker-compose rm -fs loki'
|
|
sh 'docker-compose rm -fs promtail'
|
|
sh 'docker-compose rm -fs scope'
|
|
sh 'docker-compose rm -fs node-exporter'
|
|
sh 'docker-compose rm -fs cadvisor'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc '[Optional] Run superset'
|
|
task :superset, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
conf = @utils['superset']
|
|
init_params = [
|
|
'--app', 'superset',
|
|
'--firstname', 'Admin',
|
|
'--lastname', 'Superset',
|
|
'--username', conf['username'],
|
|
'--email', conf['email'],
|
|
'--password', conf['password']
|
|
].join(' ')
|
|
|
|
puts '----- Initializing Superset -----'
|
|
sh [
|
|
'docker-compose run --rm superset',
|
|
'sh -c "',
|
|
"fabmanager create-admin #{init_params}",
|
|
'&& superset db upgrade',
|
|
# '&& superset load_examples',
|
|
'&& superset init"'
|
|
].join(' ')
|
|
|
|
puts '----- Starting Superset -----'
|
|
sh 'docker-compose up -d superset'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping Superset -----'
|
|
sh 'docker-compose rm -fs superset'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
desc '[Optional] Run Blog'
|
|
task :blog, [:command] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
puts '----- Starting Blog_db -----'
|
|
sh 'docker-compose up -d blog_db'
|
|
puts '----- Starting Blog -----'
|
|
sh 'docker-compose up -d blog'
|
|
end
|
|
|
|
def stop
|
|
puts '----- Stopping Blog -----'
|
|
sh 'docker-compose rm -fs blog'
|
|
puts '----- Stopping Blog_db -----'
|
|
sh 'docker-compose rm -fs blog_db'
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
|
|
|
|
desc 'Set up and start all services with dependencies (does not run optional ones)'
|
|
task :all, [:command] => ['versions:update', 'render:config'] do |task, args|
|
|
args.with_defaults(:command => 'start')
|
|
|
|
def start
|
|
Rake::Task["service:proxy"].invoke('start')
|
|
Rake::Task["service:backend"].invoke('start')
|
|
Rake::Task["service:influxdb"].invoke('start')
|
|
puts 'Wait 5 second for backend'
|
|
sleep(5)
|
|
Rake::Task["service:setup"].invoke('start')
|
|
Rake::Task["service:app"].invoke('start')
|
|
Rake::Task["service:frontend"].invoke('start')
|
|
Rake::Task["service:AdminTower"].invoke('start')
|
|
Rake::Task["service:mailer"].invoke('start')
|
|
Rake::Task["service:daemons"].invoke('start')
|
|
end
|
|
|
|
def stop
|
|
Rake::Task["service:proxy"].invoke('stop')
|
|
Rake::Task["service:backend"].invoke('stop')
|
|
Rake::Task["service:influxdb"].invoke('stop')
|
|
Rake::Task["service:setup"].invoke('stop')
|
|
Rake::Task["service:app"].invoke('stop')
|
|
Rake::Task["service:frontend"].invoke('stop')
|
|
Rake::Task["service:AdminTower"].invoke('stop')
|
|
Rake::Task["service:mailer"].invoke('stop')
|
|
Rake::Task["service:daemons"].invoke('stop')
|
|
end
|
|
|
|
@switch.call(args, method(:start), method(:stop))
|
|
end
|
|
end
|