Containers Docker Series — Serviços

Agnaldo Marinho
2 min readApr 27, 2018

--

Seja Bem Vindo(a), Estou animado com o fato de você querer aprender o docker.

Para escalar nossa aplicação e fazer balanceamento de carga, para isso precisamos subir o nível de hierarquia de uma aplicação distribuído para o serviço.

Em uma aplicação distribuído, em cada parte que compõe a sua aplicação é chamado de serviço. ou seja, se a sua aplicação é composta por servidor web(nginx) e banco de dados (mongodb) esses são os serviços.

Um serviço é verdadeiramente um contêiner em execução. Um serviço não só executar um contêiner, mas codificar como ele vai ser executado, quais portas vai usar, onde vai guarda os arquivos da sua aplicação, quantas réplicas do contêiner devem ser executadas para que o serviço tenha a capacidade necessária e em breve. O dimensionamento de um serviço altera o número de instâncias de contêiner que executam esse software, atribuindo mais recursos de computação ao serviço no processo.

Felizmente, é muito fácil definir, executar e dimensionar serviços com a plataforma Docker. Basta escrever um arquivo docker-compose.yml.

Instalação do componente docker compose cli

Usando Docker Compose

docker-compose.yml é o arquivo de para levantar os serviço definidos da aplicação, ele é escrito com uma syntax simples no formato “YML” ou “YAML”.

Usar o compose é basicamente um processo de três passos:

  1. Defina o ambiente do sua aplicação com um Dockerfile para que ele possa ser reproduzido em qualquer lugar.
  2. Defina os serviços que compõem sua aplicação no docker-compose.yml para que eles possam ser executados juntos em ambiente isolado.
  3. Por fim, execute docker-compose up e compose irá iniciar e executar a aplicação inteira.

Conhecendo docker-compose.yml

O docker-compose.yml é composta por quatro diretrizes: versão, serviços, volumes e network

  1. versão do docker-compose: version: ‘ ‘
  2. services: onde definimos como cada serviço que compões aaplicação, vai ser rodar.
  3. volumes: onde você definir onde estão armazenados os arquivos da aplicação.
  4. networks: onde definir quais rede internet que se comunica entre os contêineres que compõem a aplicação

Referência completa

version: '3.3'

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:

Documentação oficial do wordpress

Rodando docker-compose.yml

Lembrando que você deve está no diretório onde está o arquivo:

  • Você pode levantar a aplicação por serviço ou simplesmente tudo, que cada sequencia de quem vai subi primeiro está definido no docker-compose.yml na entrada depends_on, ali diz que a minha aplicação precisa levantar primeiro banco de dados antes de levantar o serviço wordpress.

$ docker-compose up -d

  • Listando os serviços

$ docker-compose ps

  • Lendo do log

$ docker-compose logs -f

  • Removendo os serviços

$ docker-compose down

$ docer-compose stop|kill [nome-do-serviço]

--

--

Agnaldo Marinho

DevOps Master /Site Reliability Engineering | Golang and NodeJs Developer | Linux User