‫Tudo bem. Vamos dar uma olhada em mais alguns exemplos do Dockerfile.
‫Em nosso repositório que você baixou do meu Github, vamos ao número 2 do Dockerfile.
‫Desta vez, na verdade, temos dois arquivos.
‫Nós temos o Dockerfile. E agora nós temos um índice. html.
‫Super simples. Olá Mundo. HTML
‫Não é realmente importante entender o HTML.
‫Nós vamos apenas copiá-lo para a imagem do nosso container enquanto estamos construindo.
‫Se olharmos para o Dockerfile, você verá que estamos usando o Nginx como nosso comando
‫FROM.
‫Não estamos construindo nosso próprio Nginx porque, idealmente, se você puder usar uma imagem oficial
‫para fazer o trabalho no Docker Hub, será muito mais fácil manter esse Dockerfile e
‫mantê-lo funcionando bem.
‫Em cenários mais simples, muitas vezes a imagem oficial é trabalho. Porém, à medida que você aumenta e adiciona complexidade
‫ao seu ambiente e aos seus sistemas, provavelmente você vai precisar adicionar mais softwares personalizados ou
‫alterar a maneira como ele é iniciado ou adicionar scripts para que ele ajuste a configuração.
‫Mas quando estou iniciando um novo projeto, ou se estou convertendo algum aplicativo antigo, sempre começo
‫com as imagens oficiais do Docker Hub. Então, uma vez que eu atinjo alguns obstáculos e não consigo
‫mais usar essa imagem, posso voltar ao Docker Hub e dar outra olhada e ver se há algo personalizado
‫lá que seja realmente popular, em que eu possa confiar, e investigar e Veja se isso vai resolver o meu problema.
‫Mas não há nada de errado em construir o seu próprio.
‫É apenas mais trabalho e mais manutenção ao longo do tempo.
‫Então aqui é super simples. Nós temos três estrofes.
‫Você viu o FROM antes. E desta vez temos o WORKDIR.
‫Agora, isso é basicamente apenas executar uma alteração no diretório de espaço do cd. Então você pode ser tentado a usar o comando run e
‫apenas digitar cd para este diretório e fazer algumas coisas. Mas, na verdade, a melhor prática para
‫Dockerfiles é sempre usar uma sub-rotina WORKDIR separada sempre que você estiver alterando diretórios.
‫Portanto, se o seu arquivo ficar um pouco complexo e você precisar mover-se para frente e para trás
‫no contêiner para fazer as coisas enquanto estiver construindo, você sempre desejará usar o WORKDIR porque é muito mais fácil descrever no
‫Dockerfile o que você está fazendo.
‫Neste caso, o que estamos fazendo aqui é que estamos mudando para o diretório Nginx
‫padrão para seus arquivos HTML.
‫Na configuração padrão do Docker Hub, o Nginx atua apenas como um servidor da Web e está
‫apenas servindo arquivos estáticos diretamente do disco do contêiner.
‫A última estrofe aqui, nós temos, é a cópia. E essa é a estrofe que você sempre estará usando
‫para copiar seu código-fonte de sua máquina local, ou seus servidores de construção, para suas imagens de contêiner.
‫Nesse caso, estamos apenas pegando nosso índice simples. html e estamos sobrescrevendo o arquivo no diretório padrão
‫Nginx para que seja nossa página inicial personalizada para o servidor da web.
‫Antes de construirmos isso, você notará que estamos perdendo estrofes necessárias, como o cmd.
‫Então, como podemos nos safar disso?
‫Bem, já existe um cmd especificado na imagem FROM.
‫E quando usamos o FROM, herdamos tudo do Dockerfile de onde estamos, se é mesmo uma palavra.
‫É assim que você pode encadear os Dockerfiles juntos para que as imagens dependam de outras
‫imagens que dependem de outras imagens.
‫Tudo bem. Vamos ver como isso funciona.
‫Antes de construirmos isso, vamos nos lembrar rapidamente do que um servidor Nginx padrão faz.
‫Vamos fazer um container docker rápido executar -p 8080, e não vamos precisar disso por muito tempo então vamos fazer um --rm então ele
‫irá deletar ao sair. Nós não nos importamos com o nome. Nós apenas
‫vamos rodar o Nginx. Se passarmos para o nosso navegador e digitarmos localhost, veremos
‫a página de índice Nginx padrão.
‫ESTÁ BEM.
‫Vamos lembrar disso, e então vamos apenas sair deste container e vamos agora
‫construir nossa versão do Nginx com nosso arquivo de código fonte extra.
‫ESTÁ BEM.
‫Este deve realmente ser realmente rápido.
‫Você percebe que levou apenas alguns segundos. Isso porque já tínhamos o Nginx no nosso cache de imagens. E tudo o que estava
‫sendo executado era copiar um arquivo muito pequeno e alterar o diretório de trabalho.
‫Agora vamos executar o comando exato que acabamos de executar para o Nginx. Só que desta vez, vamos usar
‫essa nova imagem que acabamos de criar.
‫Mude para o nosso navegador e atualize e ótimo.
‫Nosso HTML de índice personalizado está sendo executado lá e nosso contêiner funciona.
‫Se fizermos uma imagem rápida, podemos ver a nossa imagem mais recente no topo.
‫Se realmente quiséssemos enviá-lo para o Docker Hub, ele funciona da mesma forma que fizemos anteriormente.
‫Nós só precisamos rotular novamente. Assim, podemos fazer a tag de imagem do docker.
‫Se você se lembrar do comando help, podemos ver o formato e é sempre
‫o que estamos identificando e a tag que queremos que seja chamada. Então docker image tag nginx com html mais recente.
‫E então eu vou ter que chamá-lo de bretfisher ... Curtiu isso.
‫Então, se eu fizer uma imagem do docker ls novamente, você verá que as duas primeiras linhas têm o mesmo ID de imagem
‫e são marcadas de forma diferente.
‫Agora eu poderia fazer um docker push com esse repositório e tag, e eu poderia colocá-lo no Docker Hub.