diff --git a/bin/vmpooler b/bin/vmpooler new file mode 100755 index 0000000..9f4fe03 --- /dev/null +++ b/bin/vmpooler @@ -0,0 +1,55 @@ +#!/usr/bin/env ruby + +require 'vmpooler' + +config = Vmpooler.config +redis_host = config[:redis]['server'] +redis_port = config[:redis]['port'] +redis_password = config[:redis]['password'] +logger_file = config[:config]['logfile'] +api_logger_file = config[:config]['api_logfile'] + +metrics = Vmpooler.new_metrics(config) + +torun_threads = [] +if ARGV.count == 0 + torun = ['api', 'manager'] +else + torun = [] + torun << 'api' if ARGV.include? 'api' + torun << 'manager' if ARGV.include? 'manager' + exit(2) if torun.empty? +end + +if torun.include? 'api' + api = Thread.new do + thr = Vmpooler::API.new + redis = Vmpooler.new_redis(redis_host, redis_port, redis_password) + thr.helpers.configure(config, redis, metrics) + thr.helpers.execute! + end + torun_threads << api +end + +if torun.include? 'manager' + manager = Thread.new do + Vmpooler::PoolManager.new( + config, + Vmpooler.new_logger(logger_file), + Vmpooler.new_redis(redis_host, redis_port, redis_password), + metrics + ).execute! + end + torun_threads << manager +end + +if ENV['VMPOOLER_DEBUG'] || torun_threads.count == 2 + trap('INT') do + puts 'Shutting down.' + torun_threads.each(&:exit) + end +end + +torun_threads.each do |th| + th.join +end diff --git a/docker/Dockerfile b/docker/Dockerfile index 2c31894..63467bc 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,21 +10,12 @@ FROM jruby:9.1-jdk -RUN mkdir -p /var/lib/vmpooler - -WORKDIR /var/lib/vmpooler - -ADD Gemfile* /var/lib/vmpooler/ - -COPY . /var/lib/vmpooler COPY ./docker/docker-entrypoint.sh /usr/local/bin/ ENV LOGFILE=/dev/stdout \ RACK_ENV=production -RUN bundle install --system ; \ - ln -s /opt/jruby/bin/jruby /usr/bin/jruby ; \ - chmod +x /usr/local/bin/docker-entrypoint.sh \ - /var/lib/vmpooler/vmpooler +RUN gem install vmpooler && \ + chmod +x /usr/local/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"]