====== Ambiente Docker / Integração Contínua ======
===== Introdução =====
Para permitir melhor integração entre as equipes de desenvolvimento e de servidores da UFRJ, foram criadas imagens de contêineres com ambientes para a execução de aplicações com as linguagem utilizadas pela instituição.
Com esses contêineres, as equipes podem trabalhar em ambientes espelho, melhorando essa integração.
Este documento foi formulado utilizando-se uma estação de trabalho com o S.O. Ubuntu 18.04.
===== Construindo o ambiente =====
----
Inicialmente, deve-se clonar as imagens que estão disponíveis em git@git.ufrj.br:andrerodrigues/docker.git.
''$ git clone git@git.ufrj.br:andrerodrigues/docker.git''
''$ git clone git@git.ufrj.br:CI-CD/docker-tic.git''
Acessando o diretório do projeto, neste caso, com o nome de ''docker'', dentro do diretório ''tic'' podem ser encontradas as imagens, como no exemplo a seguir:
{{ :infotic:sistemas:dockerticll.png?400 |}}
----
Em seguida, deve-se construir as imagens que são utilizadas nos ambientes da UFRJ, a fim de manter integridade entre ambientes e análise de futuros problemas de compatibilidade. ([[docker:build|Veja mais]]):
Foi criado um arquivo bash para a criação dos containeres de forma automática. Acessando o diretório com os arquivos fonte, basta executar:
''$ sudo ./compilando_imagens.sh''
Serão criadas as seguintes imagens:
* **{name}:{tag}**
* tic/php-fpm:base
* tic/php-fpm:5.6
* tic/php-fpm:7.1
* tic/php-fpm:7.2
* jenkins/jenkins:jdk-8
* jenkins/php-fpm:base
* jenkins/php-fpm:5.6
* jenkins/php-fpm:7.1
* jenkins/nodejs:8
* jenkins/nodejs:9
* jenkins/nodejs:10
* jenkins/maven:3.5.3
A estrutura de dependência das imagens segue este padrão:
{{ :infotic:sistemas:estrutura_docker.jpg?400 |}}
Para visualizar as imagens presentes na estação de trabalho, executa-se ([[docker:imagens|Veja mais]]):
''$ docker images''
----
Em seguida, deve-se construir a imagem base através do comando ([[docker:build|Veja mais]]):
''sudo docker build -t tic/php-fpm:base tic/php-fpm-base''
Em seguida, deve-se construir a imagem desejada através do comando ([[docker:build|Veja mais]]):
''docker build -t {name}:{tag} tic/{image}''
Exemplo:
''docker build -t tic:php-fpm-7.1 tic/php-fpm-7.1-pg''
----
Por conseguinte, executa-se o contêiner com o comando:
''docker run -itd --name={docker_name} -v {/path/to/project}:/var/www {name}:{tag}''
Exemplo:
''docker run -itd --name=php71 -v /Documentos/UFRJ/Projetos/DEV:/var/www tic/php-fpm:7.1''
> Note que antes do parâmetro ''name'' há dois hifens.
----
Agora, os projetos em desenvolvimento estão em ''/Documentos/UFRJ/Projetos/DEV'' neste exemplo.
Para acessar o ambiente via terminal, usa-se ([[docker:acesso-shell|Veja mais]]):
''docker exec -it --user root {name} bash''
Exemplo:
''docker exec -it --user root php71 bash''
> Note que antes do parâmetro ''user'' há dois hifens.