From cb22aa47ba8aca5809e3c4b69360db143e259ac3 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Fri, 21 Apr 2017 09:45:30 +0200 Subject: [PATCH 1/3] Build bundle dependencies in separate docker volume [SCI-1199] --- Dockerfile | 17 +++----------- Dockerfile.production | 4 +++- Makefile | 2 +- docker-compose.yml | 53 +++++++++++++++++++++++++++---------------- 4 files changed, 40 insertions(+), 36 deletions(-) diff --git a/Dockerfile b/Dockerfile index b76ba61dc..f38b1e707 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,29 +9,18 @@ RUN apt-get update -qq && \ default-jre-headless \ unison \ sudo graphviz --no-install-recommends \ - sudo libfile-mimeinfo-perl && \ + libfile-mimeinfo-perl && \ rm -rf /var/lib/apt/lists/* # heroku tools RUN wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh -# install gems -COPY Gemfile* /tmp/ -COPY addons /tmp/addons -WORKDIR /tmp -RUN bundle install -RUN rm -rf addons +ENV BUNDLE_PATH /usr/src/bundle +RUN mkdir $BUNDLE_PATH # create app directory ENV APP_HOME /usr/src/app RUN mkdir $APP_HOME WORKDIR $APP_HOME -RUN mkdir addons -RUN ln -s $(readlink -f addons) /tmp - -# container user -RUN groupadd scinote -RUN useradd -ms /bin/bash -g scinote scinote -USER scinote CMD rails s -b 0.0.0.0 diff --git a/Dockerfile.production b/Dockerfile.production index 63bc9f0da..375cae2e1 100644 --- a/Dockerfile.production +++ b/Dockerfile.production @@ -9,13 +9,15 @@ RUN apt-get update -qq && \ netcat \ default-jre-headless \ sudo graphviz --no-install-recommends \ - sudo libfile-mimeinfo-perl && \ + libfile-mimeinfo-perl && \ rm -rf /var/lib/apt/lists/* # install gems COPY Gemfile* /tmp/ +COPY addons /tmp/addons WORKDIR /tmp RUN bundle install +RUN rm -rf addons # create app directory ENV APP_HOME /usr/src/app diff --git a/Makefile b/Makefile index d145451c7..7f2b4932a 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ rails-production: run: rm tmp/pids/server.pid || true @docker-compose up -d - @docker attach $(shell docker-compose ps web | grep "rails s" | awk '{ print $$1; }') + @docker attach scinote_web_development start: @docker-compose start diff --git a/docker-compose.yml b/docker-compose.yml index 435dff1d7..ed0560df5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,22 +1,35 @@ +version: '2.1' +services: + db: + container_name: scinote_db_development + image: postgres:9.4 + volumes: + - scinote_development_postgres:/var/lib/postgresql/data -dbdata: - image: busybox - volumes: - - /var/lib/postgresql - command: "true" + web: + build: + context: . + dockerfile: Dockerfile + image: scinote_web_development + container_name: scinote_web_development + stdin_open: true + tty: true + depends_on: + - db + ports: + - "3000:3000" + command: > + bash -c "rm -f /usr/src/app/tmp/pids/server.pid && + (bundle check || bundle install) && + bundle exec rails s -b 0.0.0.0" + environment: + - RAILS_ENV=development + volumes: + - .:/usr/src/app + - scinote_development_bundler:/usr/src/bundle + - scinote_development_files:/usr/src/app/public/system -db: - image: postgres:9.4 - volumes_from: - - dbdata - -web: - build: . - stdin_open: true - tty: true - ports: - - "3000:3000" - volumes: - - .:/usr/src/app - links: - - db +volumes: + scinote_development_postgres: + scinote_development_bundler: + scinote_development_files: From 8bf220a9728cbc1eeeef25656d2c0180e364f2b7 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Fri, 21 Apr 2017 15:13:20 +0200 Subject: [PATCH 2/3] Improve bundle install [SCI-1199] --- Dockerfile | 3 +-- Dockerfile.production | 17 ++++++++--------- docker-compose.yml | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index f38b1e707..f5aa00829 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,8 +15,7 @@ RUN apt-get update -qq && \ # heroku tools RUN wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh -ENV BUNDLE_PATH /usr/src/bundle -RUN mkdir $BUNDLE_PATH +ENV BUNDLE_PATH /usr/local/bundle/ # create app directory ENV APP_HOME /usr/src/app diff --git a/Dockerfile.production b/Dockerfile.production index 375cae2e1..5b82281e2 100644 --- a/Dockerfile.production +++ b/Dockerfile.production @@ -12,12 +12,13 @@ RUN apt-get update -qq && \ libfile-mimeinfo-perl && \ rm -rf /var/lib/apt/lists/* +ENV RAILS_ENV production + # install gems -COPY Gemfile* /tmp/ -COPY addons /tmp/addons -WORKDIR /tmp +COPY Gemfile* /usr/src/bundle/ +COPY addons /usr/src/bundle/addons +WORKDIR /usr/src/bundle RUN bundle install -RUN rm -rf addons # create app directory ENV APP_HOME /usr/src/app @@ -26,12 +27,10 @@ WORKDIR $APP_HOME COPY . . RUN rm -f $APP_HOME/config/application.yml $APP_HOME/production.env -ENV RAILS_ENV=production \ - DATABASE_URL=postgresql://postgres@db/scinote_production \ +RUN DATABASE_URL=postgresql://postgres@db/scinote_production \ PAPERCLIP_HASH_SECRET=dummy \ SECRET_KEY_BASE=dummy \ - DEFACE_ENABLED=true - -RUN bash -c "rake assets:precompile && rake deface:precompile" + DEFACE_ENABLED=true \ + bash -c "rake assets:precompile && rake deface:precompile" CMD rails s -b 0.0.0.0 diff --git a/docker-compose.yml b/docker-compose.yml index ed0560df5..bc8894c4a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,7 +26,7 @@ services: - RAILS_ENV=development volumes: - .:/usr/src/app - - scinote_development_bundler:/usr/src/bundle + - scinote_development_bundler:/usr/local/bundle/ - scinote_development_files:/usr/src/app/public/system volumes: From 4b3d752290c3ff9cfc0044139c4c7da77fe4bfc0 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Mon, 24 Apr 2017 10:12:07 +0200 Subject: [PATCH 3/3] Change docker-compose file version and add deface target to Makefile [SCI-1199] --- Makefile | 4 ++++ docker-compose.production.yml | 2 +- docker-compose.yml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7f2b4932a..946f44e0a 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ ENABLE_TUTORIAL=true ENABLE_RECAPTCHA=false ENABLE_USER_CONFIRMATION=false ENABLE_USER_REGISTRATION=true +DEFACE_ENABLED=false endef export PRODUCTION_CONFIG_BODY @@ -44,6 +45,9 @@ database: database-production: @$(MAKE) rails-production cmd="bash -c 'while ! nc -z db 5432; do sleep 1; done; rake db:create && rake db:migrate && rake db:seed'" +deface: + @$(MAKE) rails cmd="rake deface:precompile" + rails: @docker-compose run --rm web $(cmd) diff --git a/docker-compose.production.yml b/docker-compose.production.yml index 44365731d..f1fdb456c 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -1,4 +1,4 @@ -version: '2.1' +version: '2' services: db: container_name: scinote_db_production diff --git a/docker-compose.yml b/docker-compose.yml index bc8894c4a..e2429d0ef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '2.1' +version: '2' services: db: container_name: scinote_db_development