From 4fe8865aca0f9a24571f56b8a74405151ba8081d Mon Sep 17 00:00:00 2001 From: Jason Denney Date: Thu, 25 Feb 2016 13:36:01 -0800 Subject: [PATCH] Dockerize! Startup with docker-compose up Make sure to docker-compose build first --- .ruby-version | 2 +- Dockerfile | 23 ++++++++ Gemfile | 1 - Gemfile.lock | 103 +++++++++++++++++++----------------- config/database.yml.example | 24 ++++----- docker-compose.yml | 13 +++++ install_extjs.rb | 20 +++++++ 7 files changed, 122 insertions(+), 64 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100755 install_extjs.rb diff --git a/.ruby-version b/.ruby-version index e5fea6c..314a6ed 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-1.9.3-p374 +ruby-2.1.1 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9463b97 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM ruby:2.1 + +# throw errors if Gemfile has been modified since Gemfile.lock +RUN bundle config --global frozen 1 + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +RUN apt-get update && apt-get install -y nodejs --no-install-recommends && \ + apt-get install -y mysql-client postgresql-client sqlite3 --no-install-recommends && \ + apt-get install -y zip unzip --no-install-recommends && \ + rm -rf /var/lib/apt/lists/* + +COPY Gemfile /usr/src/app/ +COPY Gemfile.lock /usr/src/app/ + +RUN bundle install + +COPY install_extjs.rb /usr/src/app/ +RUN /usr/src/app/install_extjs.rb + +EXPOSE 3000 +CMD ["rails", "server", "-b", "0.0.0.0"] diff --git a/Gemfile b/Gemfile index 9bb8108..db7b323 100644 --- a/Gemfile +++ b/Gemfile @@ -45,7 +45,6 @@ group :test do gem 'launchy', '~> 2.4.2' gem 'spork', '~> 0.9.2' #guard dependency for Mac OS 10 - gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i gem 'guard-spork', '~> 1.5.1' gem 'guard-rspec', '~> 4.2.6' end diff --git a/Gemfile.lock b/Gemfile.lock index e9971ae..d9f2e53 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -36,9 +36,11 @@ GEM activesupport (3.2.13) i18n (= 0.6.1) multi_json (~> 1.0) - addressable (2.3.5) + addressable (2.4.0) arel (3.0.3) - bcrypt-ruby (3.1.2) + bcrypt (3.1.10) + bcrypt-ruby (3.1.5) + bcrypt (>= 3.1.3) bootstrap-will_paginate (0.0.10) will_paginate builder (3.0.4) @@ -49,19 +51,17 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - celluloid (0.15.2) - timers (~> 1.1.0) - childprocess (0.4.0) + childprocess (0.5.9) ffi (~> 1.0, >= 1.0.11) cliver (0.3.2) - coderay (1.1.0) + coderay (1.1.1) coffee-rails (3.2.2) coffee-script (>= 2.2.0) railties (~> 3.2.0) - coffee-script (2.2.0) + coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.7.0) + coffee-script-source (1.10.0) commonjs (0.2.7) database_cleaner (1.2.0) decent_exposure (1.0.2) @@ -72,7 +72,7 @@ GEM warden (~> 1.1.1) diff-lcs (1.2.5) erubis (2.7.0) - execjs (2.0.2) + execjs (2.6.0) factory_girl (2.6.4) activesupport (>= 2.3.9) factory_girl_rails (1.7.0) @@ -80,15 +80,18 @@ GEM railties (>= 3.0.0) faker (1.2.0) i18n (~> 0.5) - ffi (1.9.3) - formatador (0.2.4) - guard (2.4.0) + ffi (1.9.10) + formatador (0.2.5) + guard (2.13.0) formatador (>= 0.2.4) - listen (~> 2.1) + listen (>= 2.7, <= 4.0) lumberjack (~> 1.0) + nenv (~> 0.1) + notiffany (~> 0.0) pry (>= 0.9.12) + shellany (~> 0.0) thor (>= 0.18.1) - guard-rspec (4.2.6) + guard-rspec (4.2.10) guard (~> 2.1) rspec (>= 2.14, < 4.0) guard-spork (1.5.1) @@ -103,15 +106,15 @@ GEM railties (>= 3.1, < 4.1) hike (1.2.3) i18n (0.6.1) - jbuilder (2.0.3) - activesupport (>= 3.0.0) - multi_json (>= 1.2.0) + jbuilder (2.0.8) + activesupport (>= 3.0.0, < 5) + multi_json (~> 1.2) journey (1.0.4) jquery-rails (2.3.0) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) - json (1.8.1) - launchy (2.4.2) + json (1.8.3) + launchy (2.4.3) addressable (~> 2.3) less (2.2.2) commonjs (~> 0.2.6) @@ -119,18 +122,18 @@ GEM actionpack (>= 3.1) less (~> 2.2.0) libv8 (3.3.10.4) - listen (2.4.1) - celluloid (>= 0.15.2) + listen (3.0.6) rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - lumberjack (1.0.4) + rb-inotify (>= 0.9.7) + lumberjack (1.0.10) mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) method_source (0.8.2) mime-types (1.25.1) - mini_portile (0.5.2) - multi_json (1.8.4) + mini_portile2 (2.0.0) + multi_json (1.11.2) + nenv (0.3.0) netzke-basepack (0.8.4) netzke-core (~> 0.8.2) netzke-cancan (0.8.2) @@ -139,26 +142,29 @@ GEM netzke-core (0.8.4) execjs uglifier - nokogiri (1.6.1) - mini_portile (~> 0.5.0) + nokogiri (1.6.7.2) + mini_portile2 (~> 2.0.0.rc2) + notiffany (0.0.8) + nenv (~> 0.1) + shellany (~> 0.0) orm_adapter (0.0.7) pg (0.17.1) - poltergeist (1.5.0) + poltergeist (1.5.1) capybara (~> 2.1) cliver (~> 0.3.1) multi_json (~> 1.0) websocket-driver (>= 0.2.0) - polyglot (0.3.3) + polyglot (0.3.5) pry (0.9.12.6) coderay (~> 1.0) method_source (~> 0.8) slop (~> 3.4) - rack (1.4.5) - rack-cache (1.2) + rack (1.4.7) + rack-cache (1.6.1) rack (>= 0.4) - rack-ssl (1.3.3) + rack-ssl (1.3.4) rack - rack-test (0.6.2) + rack-test (0.6.3) rack (>= 1.0) rails (3.2.13) actionmailer (= 3.2.13) @@ -175,9 +181,9 @@ GEM rake (>= 0.8.7) rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) - rake (10.1.1) - rb-fsevent (0.9.4) - rb-inotify (0.9.3) + rake (10.5.0) + rb-fsevent (0.9.7) + rb-inotify (0.9.7) ffi (>= 0.5.0) rdoc (3.12.2) json (~> 1.4) @@ -185,11 +191,11 @@ GEM rspec-core (~> 2.14.0) rspec-expectations (~> 2.14.0) rspec-mocks (~> 2.14.0) - rspec-core (2.14.7) + rspec-core (2.14.8) rspec-expectations (2.14.5) diff-lcs (>= 1.1.3, < 2.0) - rspec-mocks (2.14.5) - rspec-rails (2.14.1) + rspec-mocks (2.14.6) + rspec-rails (2.14.2) actionpack (>= 3.0) activemodel (>= 3.0) activesupport (>= 3.0) @@ -197,19 +203,19 @@ GEM rspec-core (~> 2.14.0) rspec-expectations (~> 2.14.0) rspec-mocks (~> 2.14.0) + shellany (0.0.1) shoulda-matchers (1.0.0) - slop (3.4.7) + slop (3.6.0) spork (0.9.2) - sprockets (2.2.2) + sprockets (2.2.3) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) therubyracer (0.10.2) libv8 (~> 3.3.10) - thor (0.18.1) + thor (0.19.1) tilt (1.4.1) - timers (1.1.0) treetop (1.4.15) polyglot polyglot (>= 0.3.1) @@ -218,14 +224,16 @@ GEM less-rails (~> 2.2.2) railties (>= 3.1) therubyracer (~> 0.10.1) - tzinfo (0.3.38) - uglifier (2.4.0) + tzinfo (0.3.46) + uglifier (2.7.2) execjs (>= 0.3.0) json (>= 1.8.0) warden (1.1.1) rack (>= 1.0) - websocket-driver (0.3.2) - will_paginate (3.0.5) + websocket-driver (0.6.3) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.2) + will_paginate (3.0.7) xpath (2.0.0) nokogiri (~> 1.3) @@ -256,7 +264,6 @@ DEPENDENCIES poltergeist (~> 1.5.0) pry (~> 0.9.8) rails (= 3.2.13) - rb-fsevent rspec-rails (~> 2.14.0) shoulda-matchers (~> 1.0.0) spork (~> 0.9.2) diff --git a/config/database.yml.example b/config/database.yml.example index de29ed3..b51730c 100644 --- a/config/database.yml.example +++ b/config/database.yml.example @@ -1,23 +1,19 @@ -development: +development: &default adapter: postgresql - database: velocipede - username: velocipede - password: - host: 127.0.0.1 + encoding: unicode + pool: 5 + database: <%= ENV['RDS_DB_NAME'] || 'postgres' %> + username: <%= ENV['RDS_USERNAME'] || 'postgres' %> + password: <%= ENV['RDS_PASSWORD'] %> + host: <%= ENV['RDS_HOSTNAME'] || 'db' %> # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: - adapter: postgresql + <<: *default database: velocipede_test - username: velocipede - password: - host: 127.0.0.1 production: - adapter: postgresql - database: velocipede - username: velocipede - password: - host: 127.0.0.1 + <<: *default + database: velocipede_production diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..de96bb9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +db: + image: postgres + ports: + - "5432" +web: + volumes: + - .:/usr/src/app + build: . + #command: bundle exec rake db:migrate + ports: + - "8080:3000" + links: + - db diff --git a/install_extjs.rb b/install_extjs.rb new file mode 100755 index 0000000..6ea7e99 --- /dev/null +++ b/install_extjs.rb @@ -0,0 +1,20 @@ +#!/usr/bin/env ruby + +require 'fileutils' + +extjs_url = "http://my.jasondenney.com/extjs-4.1.1.zip" +download_dir = '/tmp' +dest_dir ='/usr/lib' +extjs_download_path = File.join(download_dir,'extjs-4.1.1.zip') + +files = Dir.glob(File.join(dest_dir, 'extjs', '*')) +if files.empty? and Dir.glob(extjs_download_path).empty? + `wget -P #{download_dir} #{extjs_url}` + raise "Failed downloading #{extjs_url}" if Dir.glob(extjs_download_path).empty? +end + +if files.empty? + puts `unzip #{extjs_download_path} -d #{dest_dir}/` + FileUtils.mv(File.join(dest_dir, 'ext-4.1.1a'), File.join(dest_dir, 'extjs')) +end +raise "Failed unzipping #{extjs_download_path}" if Dir.glob(File.join(dest_dir,'extjs', '*')).empty?