Beruflich Dokumente
Kultur Dokumente
Centro de informtica
Bacharelado em Sistemas de Informao
Recife, 2017
i
Universidade Federal de Pernambuco
Centro de informtica
Bacharelado em Sistemas de Informao
Recife, 2017
ii
Universidade Federal de Pernambuco
Centro de informtica
Bacharelado em Sistemas de Informao
____________________________________
Vinicius Cardoso Garcia
Recife, 2017
iii
Aquele que deseja paz e harmonia
nas relaes humanas deve sempre lutar
contra o estatismo.
iv
Agradecimentos
Gostaria de agradecer aos meus pais Joo Evangelista Vaz e Maria do Socorro Ucha
Vaz por me oferecer todo o suporte moral e econmico para realizar este curso de
graduao.
minha namorada/noiva Wadlla Rocha pela pacincia tida durante todo o
tempo que precisei para elaborar este trabalho.
Ao professor Vinicius Cardoso Garcia e ao diretor de TI da Genomika Marcel
Caraciolo por me orientar neste projeto.
E por fim a todos os meus colegas e professores, que tornaram os anos de
graduao engrandecedores e agradveis.
v
Resumo
vi
Abstract
vii
ndice de Figuras
viii
ndice de Tabelas
ix
Sumrio
1. Introduo .. 1
2. Fundamentao e Justificativa ... 3
2.1 Metodologia gil ..... 3
2.2 Metodologia DevOps . 4
2.2.1 Prticas do Devops .... 6
2.3 Continer ..... 9
2.3.1 Docker ........ 10
2.5 Concluses do captulo ... 12
3. Provisionamento, Gerenciamento de Configuraes, Orquestramento de
Contineres ..... 14
3.1 Ferramenta de provisionamento ... 14
3.1.1 Terraform ...... 14
3.2 Ferramenta gerenciadora de configuraes ... 15
3.2.1 Rancher ................... 15
3.2.1.1 Orquestrao de Infraestrutura ... 16
3.2.1.2 Orquestrao de continer e scheduling .. 17
3.3 Ferramenta orquestradora de continer .. 17
3.3.1 Cattle ...... 18
3.4 Uso das Ferramentas para deploys de Sistemas Web ..... 18
4. Projeto GenCloud ... 21
4.1 Modelo Atual . 21
4.2 GenCloud ...... 22
4.3 Tcnicas e mtricas ..... 25
4.4 Configuraes ...... 25
4.5 Anlise ... 26
4.6 Resultados . 27
4.7 Consideraes ......... 28
5. Concluso ........ 31
Referncias ......... 33
Anexo A -- Script docker-entrypoint.sh ..................... 37
Anexo B -- docker-compose.yml .................... 41
x
Anexo C -- Terraform conf.tf ............ 46
Anexo D -- Dockerfile dockerregistry.genomika.com/gensoft:base ........... 49
Anexo E -- Dockerfile dockerregistry.genomika.com/ubuntu-genomika:14.04 ........ 53
xi
1. Introduo
Plataformas de contineres de software esto ficando cada vez mais populares entre
os desenvolvedores de software, destacando-se o Docker [45]. Contineres proveem
isolamento da aplicao, dependncias e recursos de maneira similar a uma mquina
virtual, mas de maneira mais leve por compartilhar o kernel com o sistema hospedeiro
[15].
Paralelamente, a metodologia de desenvolvimento de software DevOps surge
com o objetivo de melhorar o relacionamento entre equipes de desenvolvimento e de
operaes [38]. Estas equipes, muitas vezes, buscam objetivos diferentes. De um
lado se tem a equipe de desenvolvimento, que faz uso de metodologias geis e
precisa lanar funcionalidades em uma frequncia alta, e do outro lado, se tem a
equipe de operaes, que quer manter a aplicao estvel [38]. Uma das premissas
do DevOps que o desenvolvedor pode fazer o deploy da aplicao
independentemente, e o uso de contineres, que padronizam o ambiente de
execuo da aplicao, facilita essa situao [46].
Devido ao crescente uso do Docker com o intuito de suportar os processos da
metodologia DevOps, empresas desenvolveram softwares de extenso a esta
ferramenta. Este trabalho tem o objetivo de agrupar alguns destes softwares para
oferecer uma soluo alternativa aos modelos de deploys atuais. Estas ferramentas
so:
Terraform, (provisionador de infraestrutura)
Rancher (gerenciador de configuraes).
Cattle (orquestrador de contineres docker).
No Captulo 2 abordada a fundamentao terica dos conceitos de DevOps,
e das ferramentas de contineres e Docker, assim como a justificativa do uso destes
softwares relacionados a esta metodologia.
O Captulo 3 traz uma descrio mais precisa das ferramentas que sero
utilizadas neste trabalho dentro do contexto apresentado no captulo anterior e a
1
justificativa da integrao delas para deploys de sistemas web, apresentando o
projeto GenCloud como um exemplo.
A seguir, no Captulo 4, h o objetivo de mostrar o que o projeto GenCloud,
compar-lo a um modelo mais tradicional de deploy e expor as mtricas de
implementao e execuo destes dois.
Por fim, no Captulo 5, so apresentadas as consideraes finais e as
dificuldades encontradas, alm de sugestes de trabalhos futuros.
2
2. Fundamentao e Justificativa
3
necessidades do cliente e a velocidade de entrega seja aumentada [2]. O eXtreme
Programming (XP) um processo que se preocupa como o desenvolvimento do
produto ou servio pode ser mais eficiente, ao invs de focar na gerncia do projeto.
Ele consiste em prticas e tcnicas, como a reviso constante do cdigo,
programao em par entre outras [7]. A juno das prticas do Scrum e da eXtreme
Programming mostra que elas podem se complementar na projeo e
desenvolvimento de projeto [8].
Por mais que esta metodologia tenha trazido benefcios para o
desenvolvimento de software, a mesma ainda possui lacunas que afetam a
produtividade e que sero abordadas no prximo tpico com a introduo
metodologia DevOps.
4
metodologia gil que promete reduo de custos, alto rendimento de inovaes,
rapidez ao mercado e a melhoria da qualidade [2].
A rea de atuao das metodologias gil e DevOps em relao aos setores
de desenvolvimento e de operaes mostrada na Figura 1. Percebe-se que a gil
apenas est presente nos processos dos desenvolvimento de software, porm o
produto (software) precisa ser rodado nos servidores. Essa operao realizada pelo
time de operaes, porm os mesmos precisam se preocupar com a estabilidade do
software para no haver problemas de instabilidade para os clientes. Neste momento,
o fluxo depara-se com os problemas relatados anteriormente, pois a metodologia gil
emprega velocidades de produo maiores do que a parte operacional pode suportar.
5
performance do sistema completo, que traz valor ao negcio, ao invs de ter
performance em apenas um departamento [11]. Um outro princpio amplifica os loops
dos feedbacks em todo o processo, fazendo com que as correes necessrias sejam
continuamente feitas em resposta ao cliente [11]. Como um pilar fundamental para a
cultura DevOps, fundamental considerar o princpio do aspecto da cultura da
experimentao contnua que traz consigo o enfrentamento de riscos e o aprendizado
com as falhas diante do entendimento da repetio e da prtica [11].
Devops visto como uma extenso da metodologia gil [1], portanto muitas prticas
e mtodos de trabalho definidas no movimento gil tambm faro parte da
metodologia DevOps.
Scrum a prtica mais comum no movimento gil [1], tambm sendo aplicada
no DevOps com as caractersticas de: foco no cliente, times compostos por pessoas
com vrias funcionalidades, constantes feedbacks, pequenas iteraes e a
importncia de trabalhar no produto [1, p.33]. Na Tabela 1 mostra-se uma viso geral
da metodologia DevOps, com alguns aspectos combinados da metodologia
tradicional e gil. Um exemplo para isto quando considera-se o DevOps pela
perspectiva gil, em que o principal valor gil Indivduos e interaes sobre
processos e ferramentas [2] deve ser levado em considerao.
Premissas
Fundamentais Os sistemas esto Alta qualidade. Alta qualidade.
completamente Adaptativo. Adaptativo.
especificados. Software pode ser Servios podem
Previsveis, desenvolvido ser fornecidos por
Podem ser por pequenas equipes
construdos equipes usando os multidisciplinares
atravs de princpios de de ponta a ponta
um meticuloso e melhorias na que utilizam os
extensivo concepo e princpios da
planejamento baseados em melhoria contnua,
testes rpidos com integrao, entrega
Feedback e
6
mudanas possveis deploys
Ciclo do Projeto
Guiada por tarefas Guiado por Guiada pelo
ou atividades caractersticas do Valor do negcio
produto de entrega de
ponta a ponta
Modelo de
Desenvolvimento Modelo de ciclo de Modelo de entrega Modelo de Entrega
vida evolucionrio Contnua
(Cachoeira,
espiral, ou algum
variao)
Estrutura
Organizacional Mecanizada Orgnica (flexvel e Aprendizagem
Desejada (Burocrtica com ao social (Interativa,
alta formalizao) cooperativa de flexvel e
participao Pessoas e equipes
encorajadora) colaborativas)
Tecnologia
Tecnologia Automao com
Sem restrio orientada a objetos computao em
7
nuvem,
infraestrutura como
servio
8
Figura 2 - Comparativo entre a Integrao Contnua, Entrega Contnua e
Implantao Contnua [35]
2.3 Continer
9
Figura 3 Comparativo entre mquinas virtuais e contineres [16]
2.3.1 Docker
10
Docker fez inicialmente uso da ferramenta LXC, provendo sua API [18] para
comunicao deste com o usurio, trazendo uma maior facilidade e agilidade na
criao de contineres, contudo, a substituiu pelo libcontainer, ferramenta criada pela
prpria desenvolvedora.
Atualmente, existem duas entidades que compem a ferramenta Docker, o
Docker Client e o Docker Daemon. O Docker Client um utilitrio que faz com que o
humano rode comandos de fcil entendimento, abstraindo comandos complexos [19].
J o Docker Daemon a camada que se comunica com o kernel e faz as chamadas
de sistema para criar, operar e gerenciar contineres. Na Figura 4 mostra-se um
desenho da comunicao entre o Docker Client e o Docker Daemon.
11
Docker Compose: Possibilita a criao conjunta de grupos de containers para
um propsito comum a partir de um script.
Neste captulo foi introduzido em qual contexto este trabalho est inserido,
trazendo as problemticas do desenvolvimento de produtos de TI, as metodologias
solucionadoras dos problemas apontados por ela, suas prticas e modelos de
ferramentas para auxlio da metodologia de desenvolvimento e operao dos
produtos. No captulo seguinte sero abordadas as ferramentas especficas que
atuam em conjunto para o auxlio da metodologia DevOps, tais como as ferramentas
de provisionamento, gerenciadores de configuraes e orquestradores de
contineres.
12
13
3. Provisionamento, Gerenciamento de
Configuraes e Orquestramento de Contineres
3.1.1 Terraform
14
status atual da infraestrutura e o pretendido. Com as mudanas aferidas, a ferramenta
fica disponvel para a construo, destruio, incremento ou alterao da
infraestrutura descrita nos arquivos de configurao.
Podemos assim, apontar as caractersticas do Terraform:
3.2.1 Rancher
15
pblicos de imagens, alm de fornecer facilidade aos usurios com os servios de
controle de usurios, logs de atividades e comunicao com os recursos do software
via API.
O software consiste em basicamente quatro componentes principais, so eles:
(1) orquestrao de infraestrutura;(2) orquestrao de continer e scheduling
(agendamento) ;(3) catlogo de aplicaes; e (4) grade de controle empresarial [24].
Para fins deste trabalho, sero usados os componentes da orquestrao de
infraestrutura e orquestrao de continer e scheduling. Mostra-se na Figura 5 todas
as ferramentas que o Rancher administra e alguns exemplos de aplicaes que so
fornecidas pelo gerenciador para os usos de cada rea.
O Rancher faz uso dos recursos computacionais brutos de qualquer nuvem pblica
ou privada na forma de servidores Linux, no fazendo distino se a mquina
hospedeira fsica ou virtual. Ele apenas espera que a mquina o sirva com os
recursos de CPU, memria, armazenamento em disco local e conectividade de rede.
Os servios de infraestrutura fornecidos pelo Rancher incluem em Rede,
armazenamento, balanceador de carga, DNS e segurana e que so executados
como contineres [25], podendo ser rodados em qualquer servidor com sistema
operacional Linux.
16
3.2.1.2 Orquestrao de continer e scheduling
17
A configuraes previamente ditadas pelos usurios devem ser Monitoradas e
mantidas pelo orquestrador, no estado desejado. Caso um continer falhe, o
orquestrador deve perceber e substitu-lo por outro, se um hospedeiro falhar, ele deve
redistribuir os contineres dele em outros [26].
Para este trabalho, ser usado o Cattle, a principal ferramenta orquestradora
de continer do Rancher [27], devido a sua simplicidade e maturidade em deploys de
contineres.
3.3.1 Cattle
18
A ferramenta de provisionamento, Terraform, permite a construo de
infraestrutura de forma automatizada atravs de um script de configurao [22], que
possui as variveis da infraestrutura a ser construda e da conexo com a API do
Rancher [30].
O Rancher, por sua vez, controla todos os estados do orquestrador Cattle,
ajudando a centralizar toda as configuraes e facilitando a administrao e criao
de novos ambientes conteinerizados [23].
Todas estas ferramentas permitem que as equipes de desenvolvimento sejam
mais independentes na criao de ambientes de deploys devido a facilidade na
criao de infraestruturas virtualizadas e por scripts programveis, alm de facilitar a
implementao das prticas da integrao, entrega e implantao contnua.
A proposta deste trabalho a de integrar os servios do Terraform com o do
Rancher utilizando-se a orquestrao de contineres com o Cattle, nomeando este
projeto de GenCloud, e com isso, realizar o deploy de um sistema web no modelo do
projeto GenCloud e em um modelo com os processos manuais. Esta abordagem ser
trazida no prximo captulo.
19
20
4. Projeto GenCloud
21
auxlio de ferramentas de automao, o que torna o processo cansativo e demorado
e, possivelmente, sujeito a falhas.
A equipe de desenvolvimento responsvel por construir, atualizar e realizar
o deploy do GenSoft. Ela aplica a metodologia gil em seu processo de
desenvolvimento da aplicao, utilizando-se bastante do Scrum, onde a cada duas
semanas, em mdia, termina um ciclo de produo. A cada ciclo, cada desenvolvedor
fatora seu cdigo, realiza testes unitrios [40] e o integra ao cdigo da aplicao
atravs da ferramenta de gerenciamento de verso, o GitLab [41].
Com o cdigo final pronto, o desenvolvedor entra remotamente no servidor via SSH,
atualiza o cdigo pelo GitLab, resolve os conflitos de cdigo, se houver, e roda a
aplicao. Assim como a equipe de operaes, a equipe de desenvolvimento tambm
realiza todo esse processo de forma manual, o que acarreta uma maior demora no
processo de deploy, devido a minuciosidade necessria para minimizar os problemas
de conflito de cdigo e as possveis novas instalaes de novos softwares de apoio
ao GenSoft, devido a instalao de novas bibliotecas. O maior prejudicado, na maioria
das vezes, o usurio final que precisa esperar o sistema ficar disponvel, atrasando
processos internos da empresa e podendo prejudicar o negcio.
4.2 GenCloud
22
trabalho, ele ser rodado a partir da mquina remota para poder flexibilizar e facilitar
o deploy do mesmo. Para o Terraform poder rodar, sero necessrios dois arquivos
de configurao, o do docker-compose contido no Anexo B, e o dele prprio, contido
no Anexo C. A configurao contida no Anexo C contm informaes de conexo com
o Rancher e da pilha que ser criada pelo Cattle com as configuraes contidas no
Anexo B, que contm as configuraes dos contineres que sero criados (Gensoft,
Postgres, Redis e Nginx), as imagens que sero usadas, quais portas sero
redirecionadas, as variveis de ambiente que sero adicionadas e quais pastas sero
montadas do servidor para o continer, alm de estabelecer quais as relaes entre
os contineres da pilha. Uma melhor projeo do GenCloud pode ser vista na Figura
6.
23
Figura 6 - Fluxo dos processos do GenCloud
24
GenSoft, por exemplo. Isso habilita que os desenvolvedores desenvolvam com o
mesmo ambiente de produo, porm, em suas prprias mquinas.
O projeto GenCloud permite que tarefas de infraestrutura de servidores, antes
executadas pelo time de operaes, sejam manuseadas pelos desenvolvedores
devido a facilidade na criao da infraestrutura por linhas de comandos. A equipe de
operaes apenas fica responsvel por prover e manter os servios falados
anteriormente.
25
opensource de orquestramento de mquinas virtuais, com as mesmas
especificaes. A Tabela 2 mostra as configuraes de cada umas dessas mquinas.
MV 1 8 GB 4 350 GB Ubuntu-Server
14.04
MV 2 8 GB 4 350 GB Ubuntu-Server
14.04
Cada mquina virtual rodar com o sistema operacional Ubuntu Server 14.04,
isso devido a este ser uma verso mais enxuta para servidores da distribuio Ubuntu
e possuir compatibilidade com o Docker v1.12.6 Rancher v1.6, todas ferramentas
usadas no GenCloud, alm de j vir nativo o python v3.4, na qual uma linguagem
de programao necessria para rodar o GenSoft. Sendo assim, uma nica
distribuio de sistema operacional supre as necessidades da implementao dos
dois modelos a serem comparados. O Terraform v0.9.8 ser instalado em um
computador remoto, para execuo comandos.
Para o GenSoft, no modelo do GenCloud, haver uma imagem nomeada de
dockerregistry.genomika.com/gensoft:base, cujo Dockerfile se encontra no Anexo
D e na qual j tem instalado todos os softwares necessrios para a aplicao rodar,
at a entrega deste trabalho. Esta imagem foi construda a partir de uma outra imagem
nomeada de dockerregistry.genomika.com/genomika-ubuntu:14.04, com o
Dockerfile na qual foi construda com base na imagem do ubuntu:14.04 e tem
instalado todos os softwares bsicos para as outras aplicaes da Genomika
Diagnsticos, como por exemplo, o SSH e o GIT.
Considerando-se que cada modelo tem seus modos de execuo do GenSoft,
sero elencados alguns requisitos para se estabelecer uma base de comparao.
4.5 Anlise
26
Para se obter os resultados dos testes de performance, sero analisadas duas
mtricas em ambos os modelos, a da velocidade da criao do ambiente virtual e da
disponibilidade do sistema GenSoft.
O teste da velocidade da criao do ambiente virtual visa mensurar o tempo
de instalao de todos os softwares de dependncia do GenSoft. Para realizar este
processo no modelo atual de deploy, ser instalado manualmente na mquina virtual
MV 1 os softwares do Postgres, Redis e Nginx apresentados no docker-compose do
Anexo B e os softwares apresentados nos Dockerfiles do Anexo D e E, onde cada
comando RUN representa uma linha a ser inserida no terminal do servidor. No modelo
GenCloud, os Dockerfiles sero rodados na mquina virtual MV2 atravs dos
comandos docker build -t dockerregistry.genomika.com/ubuntu-
genomika:14.04 . para o Anexo E, e o docker build -t
dockerregistry.genomika.com/gensoft:base . para o Anexo D, sequencialmente,
devido ao nvel de dependncia entre elas. Cada comando ter um tempo de
execuo e a soma deles representar o tempo final para o teste.
O segundo teste, o da disponibilidade do sistema GenSoft, visa mensurar o
tempo para disponibilizar o GenSoft na rede e a nvel de produo. No modelo atual
de deploy este processo ser realizado de forma manual, executando os mesmos
comandos disponibilizados no Anexo A. No modelo do GenCloud, como falado
anteriormente, sero executados os comandos terraform plan e o terraform apply
sequencialmente de um computador remoto. Cada comando ter um tempo de
execuo e a soma deles representar o tempo final do teste.
4.6 Resultados
27
aos trabalhos manuais e a necessidade de configurar algumas variveis, com o
Postgres como exemplo, e enquanto na MV 2 todas as configuraes j estavam pr-
configuradas.
MV 1 1h e 30 min
MV 1 180s (3 min)
MV 2 120s (2min)
4.7 Consideraes
28
O encapsulamento das aplicaes e a mobilidade entre ambientes
computacionais distintos.
Relacionamento mais saudvel entre as equipes de operaes e de
desenvolvimento.
Os resultados significativos proveem a equipe de TI com uma maior eficincia
na entrega do produto, por mais que o esforo inicial na aplicao do GenCloud seja
grande. Com mais tempo disponvel, o time pode alocar mais tempo a outras
atividades importantes.
29
30
5. Concluso
31
32
Referncias
33
12 Just Digital [online]. Disponvel em: <http://blog.justdigital.com.br/devops-qual-
a-diferencas-entre-continuous-delivery-continuous-integration-e-continuous-
deployment/>
13 MOUAT, A. Using Docker: Developing and deploying software with containers.
14 Aprenda Cloud [online]. Disponvel em:
<http://www.aprendacloud.com.br/containers-docker-vms/>
15 RUBENS, P. What are containers and why do you need them? 2015.
Disponvel em: <http://www.cio.com/article/2924995/software/what-are-containers-
and-why-do-you-need-them.html>.
16 Aprenda Cloud [online]. Disponvel em:
<http://www.aprendacloud.com.br/containers-docker-vms/>.
17 Klauslaube [online]. Disponvel em:
<http://klauslaube.com.br/2017/01/14/uma-ode-ao-docker-parte-1.html>.
18 LINTHICUM, D. The essential guide to software containers in application
development. 2016.
19 Docker Docs [online]. Disponvel em: <https://docs.docker.com/engine/docker-
overview/#what-can-i-use-docker-for>.
20 svbtle [online]. Disponvel em:
<https://svbtleusercontent.com/q58xgz8o0dzgyg_small.png>.
21 Yevgeniy,B (2017). Terraform: Up and Running: Writing Infrastructure as Code
[S.l.]: OReilly Media, 2015. ISBN 9781491915899.
22 Terraform [online]. Disponvel em: <https://www.terraform.io/intro/index.html>.
23 Meyler, K.,Holt, B., Oh, Sandys, J. Oh, M., Ramsey, G., (2013). System Center
2012 Configuration Manager (SCCM) Unleashed.
24 Disponvel em: <http://rancher.com/announcing-rancher-1-0-ga/>.
25 Rancher [online]. Disponvel em: <http://rancher.com/rancher>.
26 20 MSV, J. From containers to container orchestration. 2016. Disponvel em
https://thenewstack.io/containers-container-orchestration/: .
27 GitHub [online]. Disponvel em: <https://github.com/rancher/cattle>.
28 Rancher [online]. Disponvel em: <http://rancher.com/cattle-swarm-
kubernetes-side-side/>.
29 Rancher Docs [online]. Disponvel em:
<http://docs.rancher.com/rancher/v1.6/en/cattle/rancher-compose/>.
34
30 Terraform [online]. Disponvel em:
<https://www.terraform.io/docs/providers/rancher/index.html>.
31 Genomika Diagnsticos [online]. Disponvel em:
<https://www.genomika.com.br/>.
32 JAIN, R. The art of computer systems performance analysis: Techniques for
experimental design, measurement, simulation, and modeling. New York: Wiley, John
& Sons, 1991. ISBN 9780471503361.
33 XenServer [online]. Disponvel em: <https://xenserver.org>
34 JERNIGAN, T. Docker 1.11 et plus: Engine is now built on runC and containerd.
2016. Disponvel em: <https://medium.com/@tiffanyfayj/docker-1-11-et-plus-engine-
is-now-built-on-runc-and-containerd-a6d06d7e80ef>.
35 Disponvel em: <https://4.bp.blogspot.com/-
L0bNvBeUJ0M/VwAwnxFmZEI/AAAAAAAABcg/kitQ5yqe3BsIprPs_E714JzVjIRPVN
72w/s1600/CI_CDY_CDT_04.png>.
36 CLUSTERHQ. Container Market Adoption Survey 2016. Disponvel em:
<https://clusterhq.com/assets/pdfs/state-of-container-usage-june-2016.pdf> .
37 DOCKER INC. What is Docker? 2016. Disponvel em:
<https://www.docker.com/what-docker>.
38 RAJKUMAR, M. et al. Devops culture and its impact on cloud delivery and
software development. 2016 International Conference on Advances in Computing,
Communication, & Automation (ICACCA) (Spring), Institute of Electrical and
Electronics Engineers (IEEE), 04 2016.
39 TeraData [online]. Disponvel em: <http://blogs.teradata.com/data-points/wp-
content/uploads/2016/03/Devops-image-March-2.png>.
40 Gilson, W. Ferraz, A. TESTANDO MAIS PARA DEPURAR MENOS: OS
BENEFICIOS DOS TESTES PARA O DESENVOLVIMENTO DE SOFTWARE (2014).
Disponvel em:
<http://intertemas.toledoprudente.edu.br/revista/index.php/ETIC/article/viewFile/4118
/3878>
41 GitLab [online]. Disponvel em: <https://about.gitlab.com/features/>
35
45 GOOGLE TRENDS. Docker. 2016. Disponvel em:
<https://trends.google.com.br/trends/explore?q=\%2Fm\%2F0wkcjgj> .
46 KANG, H.; LE, M.; TAO, S. Container and microservice driven design for cloud
infrastructure devops. 2016 IEEE International Conference on Cloud Engineering
(IC2E), Institute of Electrical and Electronics Engineers (IEEE), 04 2016.
36
ANEXO A -- Script docker-entrypoint.sh
37
38
#!/bin/bash
/usr/sbin/sshd -D &!
cd gensoft
git checkout $gensoft_branch
pip3 install -r requirements/base.txt
pip3 install -r requirements/dev.txt
cd ..
cd illuminate
git checkout $illuminate_branch
python3 setup.py install
cp /var/www/gensoft/.env_homo /var/www/gensoft/.env
cd /var/www/gensoft
39
40
ANEXO B -- docker-compose.yml
41
42
version: '2'
services:
gensoft:
image: dockerregistry.genomika.com/gensoft:base
entrypoint:
- /media/entrypoint/docker-entrypoint.sh
environment:
- gensoft_branch=master
- illuminate_branch=master
- migrate=true
- port=8000
- PYTHONIOENCODING=UTF-8
- C_FORCE_ROOT="yes"
- redis_ip=172.16.225.6
- redis_port=6379
volumes:
- /home/rancher-apps/apps/gensoft/entrypoint/gensoft/:/media/entrypoint/
- /home/rancher-apps/apps/gensoft/env/:/media/env/
- /home/rancher-apps/apps/gensoft/celerylog/:/media/celerylog/
- /home/rancher-apps-homolo/apps/gensoft/mediafiles/:/gensoft/mediafiles/
- /home/rancher-apps-homolog/apps/gensoft/static/:/gensoft/static/
ports:
- 8000:8000/tcp
- 2222:22/tcp
- 5555:5555
depends_on:
- redis
- nginx
links:
- redis
nginx:
image: nginx:latest
volumes:
- /home/rancher-apps/apps/gensoft/nginx/:/etc/nginx/conf.d
- /home/rancher-apps/apps/gensoft/static/:/static/
- /home/rancher-apps/apps/gensoft/mediafiles/:/mediafiles/
ports:
- 80:80/tcp
redis:
image: redis:latest
container_name: rd01
ports:
- '6379:6379'
links:
- gensoft
db:
image: sameersbn/postgresql:9.6-2
environment:
DB_PASS: *
43
DB_USER: genomika
DEBUG: 'false'
volumes:
- /home/rancher-apps/apps/db-homolog/db/:/var/lib/postgresql
ports:
- 5433:5432/tcp
44
45
ANEXO C -- Terraform conf.tf
46
47
# Configure the Rancher provider
provider "rancher" {
api_url = "http://172.16.225.6:8080"
access_key = "47C89343774D6CDBA906"
secret_key = "H7tMa3dTEF4PbrwxZbTd8mQKDMHW32bvMkCfQTG5"
}
48
ANEXO D -- Dockerfile
dockerregistry.genomika.com/gensoft:base
49
50
FROM dockerregistry.genomika.com/ubuntu-genomika:14.04
#libs
RUN apt-get install pdftk -y
RUN apt-get install unixodbc-dev -y
RUN apt-get install libmysqlclient-dev -y
RUN apt install libpq-dev python3-dev -y
RUN apt-get -y install libncurses-dev
RUN apt-get install libffi-dev -y
RUN apt-get install libssl-dev -y
RUN apt-get install python3-dev -y
RUN apt-get install python-dev -y
RUN pip3 install Cython
RUN pip3 install gunicorn==19.1.1
RUN pip3 install django-celery
RUN pip3 install pycodestyle
RUN pip3 install markupsafe
RUN sudo apt-get install libpulse-dev libjpeg-dev -y
RUN apt-get install libxml2-dev libxslt1-dev -y
RUN pip3 install redis
#commands
WORKDIR /var/www
RUN git clone git@gitlab.com:genomika/gensoft.git
RUN git clone git@gitlab.com:genomika/illuminate.git
RUN pip3 install -r gensoft/requirements/base.txt
RUN pip3 install -r gensoft/requirements/dev.txt
RUN python3 illuminate/setup.py install
RUN rm -rf illuminate
RUN rm -rf gensoft
51
52
ANEXO E -- Dockerfile
dockerregistry.genomika.com/ubuntu-
genomika:14.04
53
54
FROM ubuntu:14.04
55