5 exemplos de composição do docker

5 exemplos de composição do docker
Docker Compose é uma maneira eficiente e fácil de implantar recipientes do Docker em um host. A compõe o arquivo YAML e cria contêineres de acordo com suas especificações. A especificação inclui quais imagens são necessárias para serem implantadas, quais portas específicas são necessárias para serem expostas, volumes, CPU e limites de uso de memória, etc.

É uma maneira fácil de configurar a implantação automatizada de aplicativos com um front -end, um banco de dados e algumas senhas e chaves de acesso jogadas para uma boa medida. Toda vez que você executa o Docker-Compose de dentro de um diretório que contém um Docker-Compose.YML passa pelo arquivo e implanta seu aplicativo conforme especificado.

Para ajudá-lo a escrever seu próprio docker-composição.YML aqui são 5 simples e, esperançosamente, trechos de iaml úteis que você pode misturar e combinar.

1. Nginx proxy reverso

Provavelmente o aplicativo mais comum a ser implantado como um contêiner do docker é nginx. Nginx pode servir como servidor proxy reverso e como ponto de terminação SSL para seus aplicativos da Web. Diferentes sistemas de gerenciamento de conteúdo, como Ghost e WordPress, podem ser hospedados atrás de um único servidor de proxy reverso NGINX e, portanto, faz sentido ter um snippet de servidor nginx útil o tempo todo. A primeira coisa que você precisaria é um arquivo de configuração nginx. Se você optar por não criar um, o servidor HTTP padrão é o que você receberá.

Por exemplo, eu criaria uma pasta Nginx-Configuração na minha pasta doméstico. O arquivo de configuração nginx.Conf estará presente dentro desta pasta, juntamente com outros diretórios de arquivos que o nginx esperaria em /etc /nginx. Isso inclui certificados e chaves SSL e nomes de host para os servidores de back -end, onde o tráfego precisa ser encaminhado.

Esta pasta pode ser montada dentro do recipiente nginx em /etc /nginx (com permissão somente leitura, se você preferir precaução extra) e pode executar o servidor como um contêiner, mas você pode configurá-lo localmente a partir do seu diretório doméstico sem precisar logar no recipiente.

Esta é uma amostra:

Versão: '3'
Serviços:
nginx:
Imagem: Nginx: mais recente
volumes:
- /Home/Usuário/Nginx-Configuração:/etc/nginx
Portas:
- 80:80
- 443: 443

Blog fantasma

O fantasma é um CMS escrito principalmente no nó.js e é simplista, rápido e elegante em design. Ele depende do Nginx para rotear o tráfego para ele e usa MariaDB ou às vezes SQLite para armazenar dados. Você pode implantar uma imagem rápida e suja do Docker para fantasma usando um trecho simples, como mostrado abaixo:

Versão: '3'
Serviços:
fantasma:
Imagem: Ghost: mais recente
Portas:
- 2368: 2368
volumes:
- Data fantasma:/var/lib/fantasma/conteúdo/
volumes:
Ghost-Data:

Isso cria um novo volume e o monta dentro do recipiente para armazenar o conteúdo do site persistentemente. Você pode adicionar o serviço de proxy reverso anterior do Nginx a este arquivo de composição e ter um blog fantasma de grau de produção em funcionamento em questão de minutos, desde que você tenha configurado o nginx para rotear o tráfego relevante da porta 80 ou 443 para a porta 2368 no fantasma recipiente.

Mariadb

O MariaDB é um software bastante útil para não estar disponível a qualquer momento em seu servidor. No entanto, os bancos de dados criam muitos logs, os dados reais tendem a se espalhar por todo o lugar e a configuração de servidores e/ou clientes nunca corre bem. O arquivo Docker-Compose cuidadosamente criado pode mitigar alguns dos problemas tentando armazenar todos os dados relevantes em um único volume do docker, enquanto o banco de dados Programas e suas complexidades estão escondidas no recipiente A:

Versão: '3'
Serviços:
mydb:
Imagem: Mariadb
ambiente:
- Mysql_root_password = my-secret-pw

Você pode criar um novo contêiner de banco de dados para cada novo aplicativo, em vez de criar mais usuários no mesmo banco de dados, configurando privilégios e passando por uma rigidez dolorosa de garantir que todos os aplicativos e usuários permaneçam em seu próprio território. Você também não precisará abrir portas no sistema host, pois o contêiner de banco de dados será executado em sua própria rede isolada e você pode tê -lo para que apenas seu aplicativo possa fazer parte dessa rede e, assim, acessar o banco de dados.

Pilha do WordPress

Um ponto culminante de todas as várias partes, desde o uso de variáveis ​​de ambiente até a execução de um servidor da Web front-end e um banco de dados de back-end, pode ser combinado em um arquivo Docker-Compose para um site do WordPress, como mostrado abaixo:

Versão: '3.3 '
Serviços:
DB:
Imagem: MySQL: 5.7
volumes:
- db_data:/var/lib/mysql
Reinicie: sempre
ambiente:
Mysql_root_password: algum padrão
Mysql_database: wordpress
Mysql_user: wordpress
Mysql_password: wordpress
WordPress:
depende de:
- dB
Imagem: WordPress: mais recente
Portas:
- "8000: 80"
Reinicie: sempre
ambiente:
Wordpress_db_host: db: 3306
Wordpress_db_user: wordpress
Wordpress_db_password: wordpress
volumes:
db_data:

Este é o exemplo mais popular e também é mencionado na documentação oficial do Docker-Compose. Provavelmente, você não estará implantando o WordPress, mas o arquivo de composição aqui ainda pode servir como uma referência rápida para pilhas de aplicativos semelhantes.

Docker-compor com dockerfiles

Até agora, estamos apenas lidando com o lado da implantação pura do Docker-Compose. Mas é provável que você use a composição para não apenas implantar, mas desenvolver, testar e então implantar aplicativos. Seja em execução em sua estação de trabalho local ou em um servidor CD/CI dedicado, o Docker-Compose pode construir uma imagem usando o DockerFile presente na raiz do repositório relativa ao seu aplicativo ou parte do aplicativo:

Versão: '3'
Serviços:
front-end:
construir: ./código de front-end
Processo interno:
Imagem: Mariadb
..

Você terá notado que, enquanto o serviço de back-end estiver usando uma imagem pré-existente do mariadb, a imagem do front-end é construída pela primeira vez a partir do DockerFile localizado dentro ./diretório de código front-end.

Blocos Lego de Docker-Compose

Toda a funcionalidade do Docker-Compose é muito fácil de entender se apenas nos perguntarmos o que é que estamos tentando construir. Após alguns erros de digitação e tentativa de falha, você ficará com um conjunto de trechos que funcionam perfeitamente e podem ser montados como blocos de construção de Lego para definir sua implantação de aplicativos.

Espero que os poucos exemplos acima lhe dêem uma boa vantagem com isso. Você pode encontrar a referência completa para escrever o arquivo de composição aqui.