Skip to content

Repositório da disciplina de Gerência de Configuração e Evolução de Software

Notifications You must be signed in to change notification settings

chrislima-inatel/S107

Repository files navigation

Java CI with Maven

S107 - Gerência de Configuração e Evolução de Software

  • Repositório da disciplina Gerência de Configuração e Evolução de Software - S107.
  • Instituto Nacional de Telecomunicações - Inatel.
  • Curso: Engenharia de Software.
  • Prof. Christopher Lima

Comandos úteis Docker

  1. Verificar a versão do docker:
docker --version
  1. Listar containers docker rodando atualmente:
docker ps
  1. Listar imagens docker na máquina:
docker image ls
  1. Download de uma imagem do docker hub:
docker pull nome_da_imagem
  1. Rodar uma imagem do docker:
docker run [opções] <imagem> [comando] [argumentos]

Aqui estão algumas das principais opções e seus significados:

-d: Executa o container em segundo plano (modo detached).
-it: Abre um terminal interativo (usado para executar comandos dentro do container).
--name <nome>: Dá um nome ao container.
-p <porta_host>:<porta_container>: Mapeia uma porta do host para uma porta do container.
-v <caminho_host>:<caminho_container>: Monta um volume, ou seja, mapeia um diretório do host para um diretório dentro do container.
--rm: Remove o container quando ele é parado.
-e <variável>=<valor>: Define variáveis de ambiente dentro do container.
  1. Parar uma imagem do docker:
docker stop <nome_ou_id_do_container>
  1. Construir uma imagem docker com um dockerfile:
docker build --tag="tag_para_imagem" <diretorio_onde_se_encontra_o_dockerfile>
  1. Executar o container utilizando docker-compose
docker-compose -f <arquivo_docker_compose> up
  1. Parar o container utilizando docker-compose
docker-compose -f <arquivo_docker_compose> down

Dockerfile

É possível ter muitas necessidades específicas para criação de uma aplicação. Nesse caso, utilizamos uma "receita de bolo" que especifica todas essas necessidades. Essa receita é chamada de Dockerfile. Tudo que precisamos para criar o nosso container específico, se encontra nesse arquivo.

Comandos dockerfile

  1. Dockerfile é um arquivo que deve ser versionado
  2. FROM: Define nossa imagem docker base.
  3. ENV: define variáveis de ambiente.
  4. USER: define o nível de usuário para executar alguma função.
  5. RUN: executa alguma comando no container

Para mais comandos e explicações: https://docs.docker.com/engine/reference/builder/

Como enviar uma imagem para o dockerhub e compartilhar?

Utilize o tutorial do docker: https://docs.docker.com/get-started/04_sharing_app/

Jenkinsfile

Jenkinsfile é um arquivo que substitui a criação de jobs na interface gráfica do Jenkins. É a maneira mais recomendada para criar Pipelines no Jenkins. É possível colocar o arquivo na raiz de um repositório (Jenkinsfile) que possibilita a criação de um Pipeline com código (Pipeline como código - conceito de infraestrutura como código). Essa técnica nos permite versionar e controlar o fluxo.

Documentação oficial: https://www.jenkins.io/doc/book/pipeline/jenkinsfile/

docker-compose

Iniciar containers individuais pela linha comando pode se tornar uma tarefa complicada. Imagina ter que subir 10 containers com aplicações diferentes, que se comunicam. Imagina fazer esse processo para diversos "clientes"? A complexidade aumenta muito rápido e a quantidade de tarefa manual exigida se torna um risco grande. Por isso, podemos utilizar o docker-compose para automatizar ainda mais o processo e conseguir gerenciar/orquestrar o processo de executar/desligar containers.

No arquivo do compose descrevemos a infraestrutura como código e como ela vai se comportar ao ser iniciado. Este aquivo nada mais é que um mapa dos comandos que precisariamos executar para executar os containers. Nesse repositório, temos o arquivo: docker-compose-jenkins.yaml:

  1. version: Versão do docker-compose utilizada
  2. services: Lista de containers que podem rodar. Reparar a identação. Logo abaixo do services precisamos especificar o nome do containers
  3. image: Imagem da qual o container será inicializado
  4. ports: Mapeamento de portas utilizados.
  5. environment: Lista de variáveis de ambiente que aquele container utilizará.
  6. volumes: Usado para mapear um volume de acesso a dados. Utilizado para realizar persistência de dados. Esse comando mapeia dados do container para dentro da máquina que está rodando o docker.

Documentação oficial: https://docs.docker.com/compose/

About

Repositório da disciplina de Gerência de Configuração e Evolução de Software

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published