Rafael Dalprá
Full-stack Dev @ Toptal

Docker!?
Plataforma líder mundial em "software containerization".
Empacota sua aplicação em um container fechado, pronto para ser usado em qualquer plataforma com suporte.
Ideal para ambiente de desenvolvimento. Ideal também para produção.
Comunidade ativa e desenvolvimento contínuo. Já suportado pelos maiores hosts do mundo.

O problema

Dev
Teste local
QA/staging
Produção
O que precisamos

Production-like
Fast
Repeatable
to the rescue

Dev
Teste local
Produção



Teste local
Produção
QA/staging

QA/staging
Na prática

Aplicação Rails
Rails app
Postgres
Redis



docker-compose.yml


Redis
Rails app
Postgres
Dockerfile

# O Ruby de sua preferência, de uma fonte oficial e minimalista
FROM ruby:2.3.1-slim
# Instala pacotes essenciais do Linux
RUN apt-get update -qq
RUN apt-get install -y build-essential libpq-dev postgresql-client git nodejs
# Define onde o app irá "viver" dentro da imagem
ENV RAILS_ROOT /var/www/app
# Cria a home do app. O server também vai precisar de uma pasta para os pids
RUN mkdir -p $RAILS_ROOT/tmp/pids
# Change Directory para a raiz do app
WORKDIR $RAILS_ROOT
# Importa o Gemfile para poder rodar o próximo comando
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
# Instala o Bundler
RUN gem install bundler
# Último passo para gerar a imagem
RUN bundle installRails app
Precisamos de uma imagem customizada:
Running

Rails app

http://localhost:3000
Postgres

http://localhost:5432
Redis

http://localhost:6379
Perguntas?

Obrigado!

Text

Oktobertech
By Rafael Dalprá
Oktobertech
Rápida introdução ao conceito de containers, com Docker.
- 173