migrating a large code-base to containers by doug johnson and jonathan lozinski (sage)

39
Migrating a large code-base to containers

Upload: docker-inc

Post on 07-Jul-2015

19.041 views

Category:

Technology


0 download

DESCRIPTION

Green field projects might be able to take advantage of containers from the start, but how can we take a monolithic existing code-base and make the move to Docker? We want to run our code as a collection of small collaborating containers, but we have a large existing code-base, and don’t want massive disruption to product releases. We’ll take a walk through some of the challenges we’ve faced, and techniques used to solve taking a set of large collaborating Rails applications into containers. In this process we’ve aimed to progressively move towards our ideal.

TRANSCRIPT

Page 1: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

Migrating a large code-base to containers

Page 2: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 3: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 4: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

@_dougjohnson @jlozinski

Page 5: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 6: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 7: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 8: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 9: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 10: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 11: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 12: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 13: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 14: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 15: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 16: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 17: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 18: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 19: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 20: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

source “http://rubygems.org”

gem ‘rails’, ‘4.1.7’

gem ‘mysql2’

gem ‘jquery-rails’

Page 21: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

FROM ruby

ADD . /var/www

RUN bundle install

CMD bundle exec rails s

Page 22: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

FROM ruby

ADD Gemfile /var/www/Gemfile

ADD Gemfile.lock /var/www/Gemfile.lock

RUN bundle install

ADD . /var/www/

CMD bundle exec rails s

Page 23: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 24: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

FROM app_base_with_gems

ADD Gemfile /var/www/Gemfile

ADD Gemfile.lock /var/www/Gemfile.lock

RUN bundle install

ADD . /var/www

CMD bundle exec rails s

Page 25: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

source “http://rubygems.org”

source “https://private.server.com”

git “[email protected]:MyOrg/private.git” do

gem “private_gem”

end

Page 26: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 27: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

docker run -v $(pwd):/var/www \

-v $HOME/.ssh:/root/.ssh \

my_base_ruby \

bundle install —path=/var/www/bundle

docker build -t myapp_base .

docker run -v $(pwd):/var/www \

-v $HOME/.ssh:/root/.ssh \

my_base_ruby \

bundle install —path=/var/www/bundle

docker build -t myapp_base .

docker run -v $(pwd):/var/www \

-v $HOME/.ssh:/root/.ssh \

my_base_ruby \

bundle install —path=/var/www/bundle

docker build -t myapp_base .

docker run -v $(pwd):/var/www \

-v $HOME/.ssh:/root/.ssh \

my_base_ruby \

bundle install —path=/var/www/bundle

docker build -t myapp_base .

Page 28: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 29: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

docker build -t $TAG .

docker run --name=$TAG \

--link=runningdb:db \

$TAG \

sh -c ‘bundle exec rake app:prepare’

docker commit $TAG $TAG

docker rm $TAG

Page 30: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

docker build -t $TAG .

docker run --name=$TAG \

--link=runningdb:db \

$TAG \

sh -c ‘bundle exec rake app:prepare’

docker commit $TAG $TAG

docker rm $TAG

#Restore original CMD

docker run -d --name=$TAG \

$TAG \

sh -c ‘bundle exec rails s’

docker commit $TAG $TAG

docker rm $TAG

Page 31: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 32: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 33: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 34: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 35: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

?

Page 36: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

https://github.com/navy-project

Page 37: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 38: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)
Page 39: Migrating a large code-base to containers by Doug Johnson and Jonathan Lozinski (Sage)

Thank You.