Como criei um ambiente de produção com Docker e RStudio Server

Se você já tentou trabalhar com R em produção (um crime para alguns) sabe das dificuldades de criar um ambiente em que as suas análises irão rodar sem problemas, principalmente em relação a pacotes e dependências.

Para casos mais simples, em que apenas é preciso controlar os pacotes do R, já existem soluções prontas como o packrat e o renv. No entanto, no caso em que é necessário o controle sobre as dependências do SO (compiladores ou softwares específicos) temos um problema não tão trivial em mãos.

Uma solução

Como trabalhamos diariamente com R aqui na empresa onde estou e temos que gerar relatórios reprodutíveis tanto localmente quanto em cloud, pensamos em uma forma de criar um ambiente básico de datascience em que todas as análises seriam criadas. Dessa forma, qualquer membro da equipe de datascience conseguiria rodar e dar manutenção nessas análises sem maiores problemas.

Como seria bom ter uma máquina portatil que funcionaria em qualquer lugar e que seria possível controlar tudo, inclusive o sistema operacional, certo? Pois é, isso é possível com a tecnologia de conteinerização usando Docker (uma maravilha do mundo moderno).

fascinating

Legal, mas como faz isso??

Para facilitar, estou partindo do pressuposto que a máquina em que esse processo será feito roda alguma distribuição linux como SO.

Os passos para fazermos a mágia acontecer são esses a seguir:

Instalar docker e docker-compose

O primeiro passo é instalar o docker. Por gosto pessoal e costume, também utilizo o docker-compose para facilitar a gestão de containers. Essas serão as únicas dependência das máquinas em que serão criados os ambientes com R.

Para instalar essas ferramentas é possível seguir os passos da própria documentação do Docker e docker-compose.

Criar um Dockerfile

Para começar, é preciso criar uma pasta para o projeto e dentro dela criar um arquivo Dockerfile. No caso, criaremos uma pasta chamada docker_R para exemplificar .

mkdir docker_R && cd docker_R && touch Dockerfile

Após criar o Dockerfile, é preciso abrí-lo em algum editor de texto e usar a seguinte sintaxe:

FROM rocker/verse:3.6.3

RUN apt-get update \
  && apt-get install -y --no-install-recommends \
    libsqlite3-dev \
    libssl-dev

RUN R -e "install.packages('RSQLite')"

Nesse caso, já usamos a imagem pronta do rocker como base, o que facilita muito o trabalho por já conter o R e RStudio server instalados. A vantagem de escrever o Dockerfile ao invés de só “puxar” o docker do rocker é poder especificar as dependências de linux (libsqlite3-dev e libssl-dev) e de R (RSQLite) que forem interessantes para a sua aplicação.

Criar um docker-compose.yml

Para ficar um pouco mais cômodo de se lidar com o docker, é possível criar um arquivo docker-compose.yml com a seguinte estrutura:

version: '3'
services:
  rstudio:
      build: .
      container_name: container_rstudio
      environment:
        USER: "usuario" 
        PASSWORD: "senha"
      ports: 
        - 8787:8787

Esse documento informa que o nome do container será “container_rstudio”, o usuário da sessão será “usuário” e a senha “senha”, uma vez que o RStudio Server precisa de login. Além disso, o RStudio Server será acessível pela porta 8787.

Buildar e iniciar o docker

Assim que o Dockerfile e o docker-compose estiverem prontos é preciso buildar e iniciar o docker para acessá-lo. Para isso, utilize o seguinte comando dentro da pasta em que se encontram os arquivos Dockerfile e docker-compose.yml:

docker-compose build

Esse processo poderá demorar um pouco, mas aproveite para tomar um café enquanto isso :) .

cafézeira

Depois que aparecer uma mensagem de Successfully Build é só usar o comando docker-compose start e acessar o RStudio Server pela porta 8787, se estiver rodando localmente é só ir no http://localhost:8787/ e Voilà!

Obs: a vantagem desse processo é que é possível “levantar” esse ambiente em qualquer máquina com docker, seja localmente ou em cloud, assim fica muito mais fácil fazer a “portabilidade” das análises.

Pronto! Agora você pode cometer o crime de usar R em produção sem medo de ser feliz!

despedida

Arthur Cesar Rocha
Arthur Cesar Rocha
Estatístico | Cientista de Dados

Um estatístico aficionado pela aleatoriedade da vida e que gosta de dinossauros.

comments powered by Disqus
Anterior