‫Nesta seção, cobrimos muito sobre Swarm. Swarm, Stacks e Secrets são como uma trilogia de características
‫incríveis que realmente podem tornar as coisas muito mais fáceis de produzir para nós.
‫Quero mostrar-lhe o que pode ser, se você realmente tirou seus arquivos de Compose, organize-os de
‫várias maneiras, e é isso
‫que basicamente chamo de viver o sonho.
‫Acontece que você pode realmente usar um único arquivo para fazer muitas coisas, mas às vezes sua
‫complexidade cresce e você vai precisar de vários arquivos de Compose.
‫Quero apenas percorrer o real rápido.
‫Você não precisa fazer isso sozinho se não quiser. Eu só vou mostrar um exemplo de como
‫esses arquivos de Compose podem funcionar juntos para criar o seu ambiente à medida que você vai.
‫Nesse cenário, vamos usar o docker para nosso ambiente de desenvolvimento local.
‫Nós vamos usar um docker para compor o config e o arquivo para o nosso ambiente CI para fazer testes de integração.
‫Então, quando estivermos em produção, vamos usar esses arquivos para empilhar empilhadeira docker para realmente
‫implantar o ambiente de produção com uma pilha. Então, estou na minha máquina local e vamos usar o exemplo antes do
‫cenário do Drupal, com um servidor de banco de dados e um frontend da web.
‫Nós temos o Dockerfile que usamos em nossas atribuições anteriores. personalizada, mas simples, com um modelo.
‫Estamos reconstruindo uma configuração drupal
‫Então, vamos ter esse arquivo de composição padrão.
‫Isso é chamado de
‫substituição, o que estamos prestes a fazer. Uma substituição é onde eu tenho o padrão Docker Compose arquivo,
‫e define os padrões que são os mesmos em todos os meus ambientes.
‫Então, eu tenho este arquivo de substituição que, por padrão, Docker Compose, se é chamado esse nome
‫exato, o docker é composto. sobrepor. yml, ele irá automaticamente trazer isso sempre que eu fizer um docker compor.
‫desenvolvimento local porque queremos os comandos digitados à mão que vamos digitar para ser mais fáceis localmente.
‫Você verá que, nesse cenário, estamos assumindo o
‫Normalmente, em seu ambiente CI, tudo é automatizado, então não nos importa se esses comandos forem
‫um pouco mais longos.
‫Mas nós realmente queremos localmente, é o compilador easy docker.
‫A coisa legal é que o Docker Compose lerá este arquivo automaticamente e
‫aplicará isso em cima, ou substituirá, todas as configurações no arquivo Yml do Docker Compose.
‫E então, observe que
‫não tenho o nome da imagem, porque isso já está especificado aqui. o Dockerfile neste diretório atual.
‫Neste arquivo de substituição, substituo dizendo que quero construir a imagem localmente usando
‫Eu quero criar uma porta em 8080 para desenvolvimento local. E eu estou configurando alguns volumes, e você até notará que eu dei um exemplo
‫aqui de um monte de ligação, onde eu talvez esteja fazendo um tema personalizado. E eu quero montar meu tema no
‫meu host no recipiente, como fizemos em seções anteriores, para que eu possa mudá-lo localmente
‫e depois vê-lo imediatamente no servidor.
‫E, por sinal, por esse exemplo, na verdade não sei como desenvolver temas no Drupal.
‫Não tenho certeza de que, se eu mudar um arquivo, será automaticamente refletido.
‫desenvolvimento na web, geralmente é assim que você faria isso sem ter que parar e começar a compor sempre que.
‫Eu só queria mostrar um exemplo de como, quando você está fazendo Aqui, abaixo do postgres, temos a variável de
‫ambiente e as configurações secretas como antes. Nós temos os volumes definidos, e você verá na
‫parte inferior, eu
‫realmente tenho o segredo baseado em arquivos, porque quando estamos fazendo o desenvolvimento local, nós precisamos usar o segredo
‫baseado em arquivo.
‫As coisas ficam um pouco interessantes quando olho para este produto ou teste arquivos. A maneira como isso vai
‫funcionar é lembrar que o. sobrepor. yml é recuperado automaticamente pela linha
‫de comando Docker Compose. precisar especificá-los manualmente.
‫Em teste ou teste, eu vou
‫Então, para teste, vamos ter que usar o comando -f.
‫Se você se lembrar de seções anteriores, o -f é quando fazemos um docker compor que queremos
‫especificar um arquivo personalizado. Vou mostrar-lhe isso em um minuto.
‫Em seguida, na produção, uma vez que não vamos realmente ter a linha de comando Docker Compose em
‫um servidor de produção, o que vamos fazer aqui é que realmente usaremos um comando de configuração do docker.
‫O comando de configuração realmente vai fazer uma saída esmagando juntos ou combinando a saída de
‫vários arquivos de configuração.
‫Então, isso será muito legal.
‫Realmente rápido, o arquivo de teste apenas tem o drupal e o postgres.
‫Imagine se esta foi a sua solução Jenkins CI ou Codeship CI, onde eu quero que ela crie a imagem
‫toda vez que eu começo meu código, e eu quero chamar isso, e eu quero que ele esteja
‫nesta porta para fins de teste. Então eu vou usar uma senha falsa. Mas eu não preciso definir nenhum dos volumes, porque
‫na verdade não vou tentar manter os dados de volume nomeados porque, novamente, é apenas uma plataforma de CI.
‫Assim que passar por testes ou testes de falhas, ele se livrará de tudo.
‫dados que estão lá, que são provenientes de um repositório Git personalizado ou talvez sejam um download FTP.
‫Então, neste cenário, você pode ver que eu realmente tenho esse cenário de dados de exemplo onde talvez na sua
‫solução de CI, você simplesmente possui bancos de Ou algo acontece durante a inicialização do seu CI
‫onde ele realmente baixa um arquivo de banco de dados. E ao invés de nós ter que criar nosso banco de
‫dados cada vez que fazemos o teste de CI, simplesmente montaríamos esse diretório de dados de amostra em que nossos dados de postgres
‫deveriam ser.
‫E assim, poderíamos garantir que tivéssemos os mesmos dados de amostra toda vez que fazemos um teste de CI.
‫Não vou entrar nisso mais. Eu só queria mostrar que isso poderia ser
‫como esse arquivo para CI seria diferente.
‫Então, na produção, temos todas as nossas preocupações normais de produção. Estamos especificando volumes para
‫nossos dados específicos. Estamos especificando nosso segredo. E observe abaixo, temos o segredo externo.
‫Porque já vamos colocar o segredo já na linha de comando como fizemos
‫na tarefa anterior.
‫O ponto aqui é que as três configurações são diferentes de alguma forma, mas todas elas
‫se relacionam com a configuração do núcleo, ou a base config, que apenas define os dois serviços e suas imagens.
‫Você pode ver aqui. Aqui está uma lembrança do que parece.
‫Saia disso e execute alguns comandos.
‫Se eu olhar neste diretório, você verá que eu tenho o arquivo base e, em seguida, os três arquivos de substituição.
‫Mais uma vez, lembre-se, que a substituição. yml é o padrão.
‫Se eu fazer um docker compor, o que ele realmente fará aqui é usar o docker-compose. primeiro, e, em seguida, irá
‫sobrepor a substituição. yml um em cima. Eu quero colocar um -d em
‫para que possamos dar uma rápida olhada depois que ele começou. Eu vou fazer um docker inspecionar a imagem Drupal.
‫E o que eu queria mostrar para você estava aqui, todos os montes estão listados.
‫Então, sabemos que foi necessário o arquivo de substituição porque o arquivo de substituição era o lugar onde definimos
‫todas essas montagens.
‫Então sabemos que ele pegou isso.
‫Obviamente, se não pegasse a base, nem saberia quais imagens usar, então seria
‫realmente reclamar para nós e dizer que o arquivo Compose estava incompleto.
‫Aquele funcionou.
‫Vamos fazer um down real quick.
‫Se nós realmente fizéssemos o comando que precisávamos para a nossa solução CI, o que teríamos que
‫fazer na nossa solução CI era ter certeza de que o Docker Compose estava lá e instalado e disponível
‫para que possamos fazer comandos de compor. arquivo base sempre precisa ser o primeiro.
‫Então, podemos especificar o -f, e então a ordem dos f é que o
‫Então, docker, escreva yml, depois teste docker.
‫Se fizéssemos isso com um fim no final e um -d, e então fui e inspecionei esse mesmo drupal, você
‫notará que não há montagens de ligação.
‫Eles estão completamente perdidos porque no arquivo de teste, nós não especificamos aqueles.
‫Na verdade, não precisávamos o Drupal para economizar informações porque seria jogado fora no
‫final de nossa corrida CI.
‫E, em seguida, em terceiro lugar, temos a configuração de produção.
‫A configuração de produção vai ser um pouco diferente.
‫Eu vou bater na Seta para cima, e depois vou fazer o prod. Em vez de um comando acima, o
‫que eu quero fazer aqui é uma configuração.
‫Se você apenas olha a ajuda muito rápida para a configuração, ela tem apenas duas opções e
‫nenhum desses é realmente relevante nesta situação.
‫O que queremos fazer é simplesmente executar a configuração por si só. O que realmente vai fazer é
‫olhar para ambos os arquivos e empurrá-los para um único arquivo Compose equivalente.
‫Então, o que podemos fazer aqui é apenas executar este comando em algum lugar em nossa solução CI. talvez com você saiba, algo assim.
‫Em seguida, faça com que ele saia para um arquivo, Esse arquivo de saída seria aquele que usamos
‫oficialmente na produção para criar ou atualizar nossa pilha.
‫No entanto, quero lançar uma pequena advertência aqui.
‫Tudo isso é relativamente novo.
‫Sabemos que os segredos e Swarm Stacks são relativamente novos.
‫Eles têm apenas alguns meses de idade.
‫A partir desta gravação.
‫Então, há algumas bordas difíceis.
‫Nós apenas executamos esse comando de configuração, e você perceberá que os segredos não estavam listados lá.
‫Isso é um bug atualmente.
‫Na verdade, estou trabalhando com a equipe Docker para ver se não podemos abalar esse bug.
‫Então, quando você lê isso, talvez já tenha sido corrigido.
‫Certifique-se de inspecionar a saída da linha de configuração antes de
‫partir na produção.
‫segundo lugar, a opção Compose Extends, que eu não discuti aqui, é outra maneira de substituir esses arquivos Compose,
‫onde você realmente usa o arquivo de substituição e você realmente define uma seção de extensões lá.
‫Em
‫É um pouco mais declarativo, então é mais fácil de entender. Vou fornecer um link nas
‫referências para esta seção. Basta saber que a opção Extensões ainda não funciona nas pilhas de Swarms.
‫Eu não mencionei isso aqui, porque na verdade não lhe dá o ciclo de vida completo do aplicativo
‫que esperávamos, mas espero que eles, em algum momento, façam algo sobre isso.
‫Como adicione-o ao Swarm ou crie um fluxo de trabalho melhor. Porque essa é realmente a idéia que estamos tentando
‫alcançar com todas essas ferramentas, é ter um ciclo de vida completo e fácil desde o desenvolvimento até o
‫teste, na produção, com o mesmo conjunto de configurações, no mesmo conjunto de imagens .
‫Espero que você tenha pensado sobre como você pode fazer seus aplicativos dessa forma, e como
‫você pode ampliar seus próprios arquivos Compose para cenários complexos.
‫Porque nada coloca um sorriso no meu rosto mais rápido com o Docker do que quando vejo alguém executar um
‫comando de uma linha para fazer algo que anteriormente fazia vários scripts para executar.