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 install

Rails 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