R + Shiny + Mongo + Docker
Mesmo sendo um projeto que utiliza R e Mongo, você não precisa deles instalados na sua máquina -- eu não precisei para desenvolver nem rodar --, nem em outra máquina para acesso remoto ou coisa do tipo. A ideia é mostrar como desenvolver um projeto usando esta stack que consiga rodar em qualquer sistema operacional, seja ele Linux, Windows ou Mac sem mesmo ter as ferramentas instaladas, como eu descrevo mais aqui.
Caso tenha caído de gaiato no navio, por favor dê uma olhada no arquivo Makefile antes de tudo e caso não sabia o que ele faz, basicamente ele irá configurar a sua máquina para este projeto. Basicamente só abrir um terminal e digitar o seguinte comando:
make
AVISO: caso vá rodar qualquer comando com docker-compose
, por favor procure instalar o mkcert antes e rodar o seguinte comando antes:
curl https://gist.githubusercontent.com/Fazendaaa/289b72a80e2087577ee0fecee06e4417/raw/3b661272a8e18f978f1ecb5dd1453da1ff5801c6/gistfile1.txt | sh
Ele irá configurar sua máquina para que ela suporte os artefatos necessários para fazer com que a aplicação tenha um TLS local
Caso seja um "negacionista" e não uma "testemunha de Docker" que nem eu, tudo bem. Uma imagem foi disponibilizada para rodar apenas um comando:
docker run --publish 80:80 -it fazenda/rsmd R -e "shiny::runApp('.', host = '0.0.0.0', port = 80)"
Abra seu navegador e digite localhost
nele.
Esta versão se encontra sem BD mais por motivos de "segurança" de que você rodando ela na sua máquina não estará enviando seus dados para nenhum BD externo nem nada do tipo. Apenas aquele que configurar ativamente ou rodar nas sua máquina.
Baixe ou clone este repositório. Entre na pasta e rode o seguinte comando:
docker-compose up
Abrir seu navegador e digitar rsmd.docker.localhost
nele.
Caso resolva brincar e fazer alterações no código, se lembre de rodar com as próximas vezes com a flag --build
para o docker-compose
não utilizar o cache gerado pela última execução
docker-compose up --build
obs: este processo pode levar algum tempo, se lembre que se trata de uma demo, um projeto deste nunca iria para produção de tal maneira. A ideia é mostrar pouco código e muito """resultado""", otimizações são necessárias e fora do escopo para uma demo
Caso queira mostrar para alguém o projeto rodando com o BD apenas mandando o arquivo docker-compose.yml
, basta alterar o seguinte trexo:
...
shiny:
# build: . -- só remover esta linha
image: fazenda/rsmd # e só adionar esta
container_name: shiny
restart: always
...
Com isto, um simples docker-compose up
no mesmo diretório que estiver o novo arquivo fará a magia >,<
Como o próprio docker-compose.yml
mostra, este pacote não possui um banco de dados persiste, mas para fazer tal apenas adicione as seguintes linhas ao seu mesmo arquivo:
...
container_name: mongo
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=example
volumes: # adicionar estas duas linhas substituindo a primeira parte do caminho pelo
- /o/lugar/na/minha/maquina/para/salvar:/data/db # caminho desejado, recomendo caminhos absolutos
...
Você consegue usar no seu celular também:
README.md
Utilizando a GNU V2
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.