1 00:00:04,820 --> 00:00:12,470 ‫Nesta seção, cobrimos muito sobre Swarm. Swarm, Stacks e Secrets são como uma trilogia de características 2 00:00:12,470 --> 00:00:17,510 ‫incríveis que realmente podem tornar as coisas muito mais fáceis de produzir para nós. 3 00:00:17,600 --> 00:00:23,120 ‫Quero mostrar-lhe o que pode ser, se você realmente tirou seus arquivos de Compose, organize-os de 4 00:00:23,120 --> 00:00:24,710 ‫várias maneiras, e é isso 5 00:00:24,920 --> 00:00:27,210 ‫que basicamente chamo de viver o sonho. 6 00:00:27,230 --> 00:00:32,690 ‫Acontece que você pode realmente usar um único arquivo para fazer muitas coisas, mas às vezes sua 7 00:00:32,690 --> 00:00:36,080 ‫complexidade cresce e você vai precisar de vários arquivos de Compose. 8 00:00:36,080 --> 00:00:38,060 ‫Quero apenas percorrer o real rápido. 9 00:00:38,060 --> 00:00:42,620 ‫Você não precisa fazer isso sozinho se não quiser. Eu só vou mostrar um exemplo de como 10 00:00:42,620 --> 00:00:47,520 ‫esses arquivos de Compose podem funcionar juntos para criar o seu ambiente à medida que você vai. 11 00:00:47,780 --> 00:00:52,490 ‫Nesse cenário, vamos usar o docker para nosso ambiente de desenvolvimento local. 12 00:00:52,490 --> 00:00:59,170 ‫Nós vamos usar um docker para compor o config e o arquivo para o nosso ambiente CI para fazer testes de integração. 13 00:00:59,390 --> 00:01:04,580 ‫Então, quando estivermos em produção, vamos usar esses arquivos para empilhar empilhadeira docker para realmente 14 00:01:04,580 --> 00:01:10,630 ‫implantar o ambiente de produção com uma pilha. Então, estou na minha máquina local e vamos usar o exemplo antes do 15 00:01:10,630 --> 00:01:14,330 ‫cenário do Drupal, com um servidor de banco de dados e um frontend da web. 16 00:01:14,380 --> 00:01:19,630 ‫Nós temos o Dockerfile que usamos em nossas atribuições anteriores. personalizada, mas simples, com um modelo. 17 00:01:19,690 --> 00:01:21,880 ‫Estamos reconstruindo uma configuração drupal 18 00:01:22,060 --> 00:01:25,540 ‫Então, vamos ter esse arquivo de composição padrão. 19 00:01:25,540 --> 00:01:26,990 ‫Isso é chamado de 20 00:01:26,980 --> 00:01:32,350 ‫substituição, o que estamos prestes a fazer. Uma substituição é onde eu tenho o padrão Docker Compose arquivo, 21 00:01:32,350 --> 00:01:35,710 ‫e define os padrões que são os mesmos em todos os meus ambientes. 22 00:01:35,710 --> 00:01:42,370 ‫Então, eu tenho este arquivo de substituição que, por padrão, Docker Compose, se é chamado esse nome 23 00:01:42,370 --> 00:01:48,060 ‫exato, o docker é composto. sobrepor. yml, ele irá automaticamente trazer isso sempre que eu fizer um docker compor. 24 00:01:48,190 --> 00:01:53,200 ‫desenvolvimento local porque queremos os comandos digitados à mão que vamos digitar para ser mais fáceis localmente. 25 00:01:53,200 --> 00:01:55,650 ‫Você verá que, nesse cenário, estamos assumindo o 26 00:01:55,720 --> 00:02:00,400 ‫Normalmente, em seu ambiente CI, tudo é automatizado, então não nos importa se esses comandos forem 27 00:02:00,400 --> 00:02:01,470 ‫um pouco mais longos. 28 00:02:01,520 --> 00:02:04,750 ‫Mas nós realmente queremos localmente, é o compilador easy docker. 29 00:02:04,750 --> 00:02:08,890 ‫A coisa legal é que o Docker Compose lerá este arquivo automaticamente e 30 00:02:08,890 --> 00:02:13,750 ‫aplicará isso em cima, ou substituirá, todas as configurações no arquivo Yml do Docker Compose. 31 00:02:13,750 --> 00:02:14,590 ‫E então, observe que 32 00:02:14,630 --> 00:02:19,780 ‫não tenho o nome da imagem, porque isso já está especificado aqui. o Dockerfile neste diretório atual. 33 00:02:19,840 --> 00:02:25,800 ‫Neste arquivo de substituição, substituo dizendo que quero construir a imagem localmente usando 34 00:02:26,020 --> 00:02:32,920 ‫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 35 00:02:32,920 --> 00:02:39,190 ‫aqui de um monte de ligação, onde eu talvez esteja fazendo um tema personalizado. E eu quero montar meu tema no 36 00:02:39,190 --> 00:02:45,550 ‫meu host no recipiente, como fizemos em seções anteriores, para que eu possa mudá-lo localmente 37 00:02:45,580 --> 00:02:48,130 ‫e depois vê-lo imediatamente no servidor. 38 00:02:48,130 --> 00:02:52,790 ‫E, por sinal, por esse exemplo, na verdade não sei como desenvolver temas no Drupal. 39 00:02:52,810 --> 00:02:57,170 ‫Não tenho certeza de que, se eu mudar um arquivo, será automaticamente refletido. 40 00:02:57,310 --> 00:03:02,050 ‫desenvolvimento na web, geralmente é assim que você faria isso sem ter que parar e começar a compor sempre que. 41 00:03:02,050 --> 00:03:07,480 ‫Eu só queria mostrar um exemplo de como, quando você está fazendo Aqui, abaixo do postgres, temos a variável de 42 00:03:07,480 --> 00:03:12,610 ‫ambiente e as configurações secretas como antes. Nós temos os volumes definidos, e você verá na 43 00:03:12,610 --> 00:03:13,470 ‫parte inferior, eu 44 00:03:13,480 --> 00:03:18,780 ‫realmente tenho o segredo baseado em arquivos, porque quando estamos fazendo o desenvolvimento local, nós precisamos usar o segredo 45 00:03:18,790 --> 00:03:19,690 ‫baseado em arquivo. 46 00:03:19,960 --> 00:03:24,130 ‫As coisas ficam um pouco interessantes quando olho para este produto ou teste arquivos. A maneira como isso vai 47 00:03:24,130 --> 00:03:29,680 ‫funcionar é lembrar que o. sobrepor. yml é recuperado automaticamente pela linha 48 00:03:29,680 --> 00:03:32,130 ‫de comando Docker Compose. precisar especificá-los manualmente. 49 00:03:32,140 --> 00:03:34,640 ‫Em teste ou teste, eu vou 50 00:03:34,810 --> 00:03:38,420 ‫Então, para teste, vamos ter que usar o comando -f. 51 00:03:38,530 --> 00:03:44,770 ‫Se você se lembrar de seções anteriores, o -f é quando fazemos um docker compor que queremos 52 00:03:44,770 --> 00:03:47,590 ‫especificar um arquivo personalizado. Vou mostrar-lhe isso em um minuto. 53 00:03:47,590 --> 00:03:53,170 ‫Em seguida, na produção, uma vez que não vamos realmente ter a linha de comando Docker Compose em 54 00:03:53,170 --> 00:03:59,260 ‫um servidor de produção, o que vamos fazer aqui é que realmente usaremos um comando de configuração do docker. 55 00:03:59,260 --> 00:04:05,590 ‫O comando de configuração realmente vai fazer uma saída esmagando juntos ou combinando a saída de 56 00:04:05,590 --> 00:04:07,050 ‫vários arquivos de configuração. 57 00:04:07,060 --> 00:04:08,290 ‫Então, isso será muito legal. 58 00:04:08,290 --> 00:04:12,520 ‫Realmente rápido, o arquivo de teste apenas tem o drupal e o postgres. 59 00:04:12,520 --> 00:04:18,820 ‫Imagine se esta foi a sua solução Jenkins CI ou Codeship CI, onde eu quero que ela crie a imagem 60 00:04:18,850 --> 00:04:24,430 ‫toda vez que eu começo meu código, e eu quero chamar isso, e eu quero que ele esteja 61 00:04:24,430 --> 00:04:30,520 ‫nesta porta para fins de teste. Então eu vou usar uma senha falsa. Mas eu não preciso definir nenhum dos volumes, porque 62 00:04:30,520 --> 00:04:35,080 ‫na verdade não vou tentar manter os dados de volume nomeados porque, novamente, é apenas uma plataforma de CI. 63 00:04:35,080 --> 00:04:39,040 ‫Assim que passar por testes ou testes de falhas, ele se livrará de tudo. 64 00:04:39,190 --> 00:04:44,950 ‫dados que estão lá, que são provenientes de um repositório Git personalizado ou talvez sejam um download FTP. 65 00:04:45,040 --> 00:04:51,310 ‫Então, neste cenário, você pode ver que eu realmente tenho esse cenário de dados de exemplo onde talvez na sua 66 00:04:51,340 --> 00:04:56,470 ‫solução de CI, você simplesmente possui bancos de Ou algo acontece durante a inicialização do seu CI 67 00:04:56,470 --> 00:05:02,320 ‫onde ele realmente baixa um arquivo de banco de dados. E ao invés de nós ter que criar nosso banco de 68 00:05:02,320 --> 00:05:08,260 ‫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 69 00:05:08,260 --> 00:05:08,840 ‫deveriam ser. 70 00:05:08,920 --> 00:05:13,740 ‫E assim, poderíamos garantir que tivéssemos os mesmos dados de amostra toda vez que fazemos um teste de CI. 71 00:05:14,050 --> 00:05:17,710 ‫Não vou entrar nisso mais. Eu só queria mostrar que isso poderia ser 72 00:05:17,710 --> 00:05:19,320 ‫como esse arquivo para CI seria diferente. 73 00:05:19,600 --> 00:05:25,840 ‫Então, na produção, temos todas as nossas preocupações normais de produção. Estamos especificando volumes para 74 00:05:25,840 --> 00:05:32,260 ‫nossos dados específicos. Estamos especificando nosso segredo. E observe abaixo, temos o segredo externo. 75 00:05:32,260 --> 00:05:37,030 ‫Porque já vamos colocar o segredo já na linha de comando como fizemos 76 00:05:37,030 --> 00:05:38,080 ‫na tarefa anterior. 77 00:05:38,080 --> 00:05:43,690 ‫O ponto aqui é que as três configurações são diferentes de alguma forma, mas todas elas 78 00:05:43,690 --> 00:05:51,010 ‫se relacionam com a configuração do núcleo, ou a base config, que apenas define os dois serviços e suas imagens. 79 00:05:51,250 --> 00:05:53,700 ‫Você pode ver aqui. Aqui está uma lembrança do que parece. 80 00:05:53,710 --> 00:05:56,910 ‫Saia disso e execute alguns comandos. 81 00:05:57,090 --> 00:06:01,870 ‫Se eu olhar neste diretório, você verá que eu tenho o arquivo base e, em seguida, os três arquivos de substituição. 82 00:06:01,960 --> 00:06:04,640 ‫Mais uma vez, lembre-se, que a substituição. yml é o padrão. 83 00:06:04,660 --> 00:06:12,590 ‫Se eu fazer um docker compor, o que ele realmente fará aqui é usar o docker-compose. primeiro, e, em seguida, irá 84 00:06:12,710 --> 00:06:19,190 ‫sobrepor a substituição. yml um em cima. Eu quero colocar um -d em 85 00:06:19,190 --> 00:06:26,960 ‫para que possamos dar uma rápida olhada depois que ele começou. Eu vou fazer um docker inspecionar a imagem Drupal. 86 00:06:27,260 --> 00:06:30,800 ‫E o que eu queria mostrar para você estava aqui, todos os montes estão listados. 87 00:06:30,800 --> 00:06:36,920 ‫Então, sabemos que foi necessário o arquivo de substituição porque o arquivo de substituição era o lugar onde definimos 88 00:06:36,920 --> 00:06:37,720 ‫todas essas montagens. 89 00:06:37,880 --> 00:06:39,460 ‫Então sabemos que ele pegou isso. 90 00:06:39,590 --> 00:06:43,400 ‫Obviamente, se não pegasse a base, nem saberia quais imagens usar, então seria 91 00:06:43,400 --> 00:06:47,050 ‫realmente reclamar para nós e dizer que o arquivo Compose estava incompleto. 92 00:06:47,240 --> 00:06:48,160 ‫Aquele funcionou. 93 00:06:48,170 --> 00:06:50,710 ‫Vamos fazer um down real quick. 94 00:06:50,900 --> 00:06:56,600 ‫Se nós realmente fizéssemos o comando que precisávamos para a nossa solução CI, o que teríamos que 95 00:06:56,600 --> 00:07:02,960 ‫fazer na nossa solução CI era ter certeza de que o Docker Compose estava lá e instalado e disponível 96 00:07:02,960 --> 00:07:07,610 ‫para que possamos fazer comandos de compor. arquivo base sempre precisa ser o primeiro. 97 00:07:07,790 --> 00:07:12,210 ‫Então, podemos especificar o -f, e então a ordem dos f é que o 98 00:07:12,260 --> 00:07:18,010 ‫Então, docker, escreva yml, depois teste docker. 99 00:07:18,290 --> 00:07:26,970 ‫Se fizéssemos isso com um fim no final e um -d, e então fui e inspecionei esse mesmo drupal, você 100 00:07:27,050 --> 00:07:30,060 ‫notará que não há montagens de ligação. 101 00:07:30,060 --> 00:07:34,250 ‫Eles estão completamente perdidos porque no arquivo de teste, nós não especificamos aqueles. 102 00:07:34,250 --> 00:07:38,270 ‫Na verdade, não precisávamos o Drupal para economizar informações porque seria jogado fora no 103 00:07:38,270 --> 00:07:39,760 ‫final de nossa corrida CI. 104 00:07:39,980 --> 00:07:42,710 ‫E, em seguida, em terceiro lugar, temos a configuração de produção. 105 00:07:42,710 --> 00:07:44,980 ‫A configuração de produção vai ser um pouco diferente. 106 00:07:45,200 --> 00:07:50,450 ‫Eu vou bater na Seta para cima, e depois vou fazer o prod. Em vez de um comando acima, o 107 00:07:50,450 --> 00:07:53,120 ‫que eu quero fazer aqui é uma configuração. 108 00:07:53,290 --> 00:07:58,640 ‫Se você apenas olha a ajuda muito rápida para a configuração, ela tem apenas duas opções e 109 00:07:58,640 --> 00:08:00,880 ‫nenhum desses é realmente relevante nesta situação. 110 00:08:00,890 --> 00:08:05,990 ‫O que queremos fazer é simplesmente executar a configuração por si só. O que realmente vai fazer é 111 00:08:05,990 --> 00:08:11,080 ‫olhar para ambos os arquivos e empurrá-los para um único arquivo Compose equivalente. 112 00:08:11,090 --> 00:08:16,010 ‫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. 113 00:08:16,010 --> 00:08:23,690 ‫Em seguida, faça com que ele saia para um arquivo, Esse arquivo de saída seria aquele que usamos 114 00:08:23,690 --> 00:08:28,220 ‫oficialmente na produção para criar ou atualizar nossa pilha. 115 00:08:28,220 --> 00:08:31,490 ‫No entanto, quero lançar uma pequena advertência aqui. 116 00:08:31,550 --> 00:08:34,130 ‫Tudo isso é relativamente novo. 117 00:08:34,160 --> 00:08:37,340 ‫Sabemos que os segredos e Swarm Stacks são relativamente novos. 118 00:08:37,340 --> 00:08:38,620 ‫Eles têm apenas alguns meses de idade. 119 00:08:38,630 --> 00:08:39,920 ‫A partir desta gravação. 120 00:08:40,040 --> 00:08:41,980 ‫Então, há algumas bordas difíceis. 121 00:08:42,050 --> 00:08:48,850 ‫Nós apenas executamos esse comando de configuração, e você perceberá que os segredos não estavam listados lá. 122 00:08:49,070 --> 00:08:50,490 ‫Isso é um bug atualmente. 123 00:08:50,510 --> 00:08:53,870 ‫Na verdade, estou trabalhando com a equipe Docker para ver se não podemos abalar esse bug. 124 00:08:53,870 --> 00:08:57,760 ‫Então, quando você lê isso, talvez já tenha sido corrigido. 125 00:08:57,770 --> 00:09:01,490 ‫Certifique-se de inspecionar a saída da linha de configuração antes de 126 00:09:01,480 --> 00:09:02,680 ‫partir na produção. 127 00:09:02,810 --> 00:09:10,070 ‫segundo lugar, a opção Compose Extends, que eu não discuti aqui, é outra maneira de substituir esses arquivos Compose, 128 00:09:10,070 --> 00:09:16,580 ‫onde você realmente usa o arquivo de substituição e você realmente define uma seção de extensões lá. 129 00:09:16,580 --> 00:09:17,150 ‫Em 130 00:09:17,180 --> 00:09:23,120 ‫É um pouco mais declarativo, então é mais fácil de entender. Vou fornecer um link nas 131 00:09:23,120 --> 00:09:28,970 ‫referências para esta seção. Basta saber que a opção Extensões ainda não funciona nas pilhas de Swarms. 132 00:09:29,000 --> 00:09:33,770 ‫Eu não mencionei isso aqui, porque na verdade não lhe dá o ciclo de vida completo do aplicativo 133 00:09:33,770 --> 00:09:37,360 ‫que esperávamos, mas espero que eles, em algum momento, façam algo sobre isso. 134 00:09:37,370 --> 00:09:42,860 ‫Como adicione-o ao Swarm ou crie um fluxo de trabalho melhor. Porque essa é realmente a idéia que estamos tentando 135 00:09:42,860 --> 00:09:48,800 ‫alcançar com todas essas ferramentas, é ter um ciclo de vida completo e fácil desde o desenvolvimento até o 136 00:09:48,830 --> 00:09:53,850 ‫teste, na produção, com o mesmo conjunto de configurações, no mesmo conjunto de imagens . 137 00:09:53,850 --> 00:09:58,220 ‫Espero que você tenha pensado sobre como você pode fazer seus aplicativos dessa forma, e como 138 00:09:58,220 --> 00:10:00,980 ‫você pode ampliar seus próprios arquivos Compose para cenários complexos. 139 00:10:00,980 --> 00:10:06,140 ‫Porque nada coloca um sorriso no meu rosto mais rápido com o Docker do que quando vejo alguém executar um 140 00:10:06,140 --> 00:10:09,550 ‫comando de uma linha para fazer algo que anteriormente fazia vários scripts para executar.