‫Esta palestra será tudo sobre a adição de construção de imagem em seus arquivos Compose, de modo que ele
‫garanta automaticamente que você tenha uma imagem pronta para
‫ir quando você estiver executando compor comandos. Como outros palestrantes nesta seção, você
‫realmente precisa ter uma boa sensação de funcionalidade de linha de comando Docker e Docker.
‫Outra coisa que o Compose pode fazer para você é criar suas imagens em tempo de execução. Na verdade, ele procurará o cache de imagens,
‫e se tiver opções de compilação, ele irá construir essa imagem quando você usar o comando up.
‫Não irá construir a imagem toda vez.
‫Ele só irá construir se não encontrá-lo.
‫Você precisará usar a compilação de compilador docker para reconstruir suas imagens se você
‫as alterar, ou você pode usar o docker componer - construir.
‫Na verdade, veremos isso em um minuto.
‫Isso é realmente ótimo para quando você usa o Compose localmente e você possui imagens que deseja criar. Talvez você não queira usar
‫o volume de montagem. Você realmente deseja copiar arquivos, ou algo assim, na imagem.
‫Seu comando de compilação pode ser bastante complexo. Pode ter algumas variáveis ​​de ambiente personalizadas ou
‫argumentos de compilação.
‫Por sinal, construa argumentos, sobre os quais não falamos. ambiente que estão disponíveis apenas durante as compilações.
‫Isso é realmente apenas variáveis ​​de Você pode olhar os documentos. docker. com documentação sobre Dockerfiles
‫e vai falar sobre construir argumentos em profundidade.
‫Aqui, vamos ver um exemplo de como você pode usar isso localmente.
‫Estou no diretório da amostra 3. Você pode ver aqui, eu tenho um arquivo Docker
‫Compose pré-construído aqui.
‫Na verdade, eu tenho um Dockerfile chamado nginx. Dockerfile. Então, uma configuração nginx semelhante ao que
‫tínhamos anteriormente, onde realmente estamos usando o Nginx como um proxy reverso para o nosso site.
‫Se entramos no Docker Compose, você pode ver como eu arquitei essa solução.
‫Na verdade, tenho dois serviços.
‫Um deles é o proxy Nginx como antes, e um deles é o servidor web Apache como antes.
‫Mas algumas coisas são diferentes.
‫Em vez de eu especificando a imagem padrão para o Nginx, na verdade, estou criando um personalizado.
‫Você pode ver aqui que eu realmente dei alguns argumentos onde eu estou dizendo que o
‫Dockerfile que ele precisa usar é um Dockerfile especialmente chamado.
‫Eu quero que ele construa esse Dockerfile neste diretório atual em que está. ele nomeie essa imagem quando ela
‫for compilada, nginx-custom.
‫Eu quero que Ele vai armazenar isso no meu cache local. Então, abaixo, na parte inferior, temos um
‫servidor web executando o Apache.
‫O que fiz aqui é que eu realmente montei alguns arquivos de origem HTML que eu tenho no servidor Apache.
‫Então, o cenário aqui é talvez eu sou um
‫desenvolvedor web, eu tenho um site estático aqui,
‫embaixo deste diretório HTML que eu realmente não preciso me preocupar demais.
‫É só usar um pequeno modelo de bootstrap.
‫mas sei quando vou a produção com isso, na verdade, ficará sentado atrás de um proxy Nginx.
‫Eu vou editar isso localmente, no meu editor aqui,
‫Então, eu quero imitar esse ambiente de produção, tanto quanto possível, localmente, apenas para garantir que eu
‫descartei quaisquer problemas ou problemas. Neste caso, eu quero esse
‫Nginx, e eu sei que essa configuração Nginx é a que eles vão usar no
‫servidor de produção, de modo que eu apenas use isso aqui.
‫Esta é realmente a mesma configuração do Nginx que antes.
‫Quando eu executo o comando de compilação do docker, primeiro irá verificar o
‫nome dessa imagem no meu cache. compilação aqui para procurar o Dockerfile e, em seguida, criar minha imagem.
‫Se não encontrá-lo, então vai usar esses comandos de Você pode ver deste Dockerfile, é bastante simples na verdade.
‫É só usar uma versão específica do Nginx e então só vai copiar um arquivo.
‫Vai obter o resto de suas informações da configuração Nginx do Docker Hub e
‫depois vai copiar na minha configuração Nginx.
‫Se você lembrar em um exemplo anterior, nós realmente fizemos um link para montar esta configuração Nginx através do
‫nosso arquivo de composição.
‫Neste caso, estamos apenas querendo que ele crie toda a imagem.
‫esta configuração de proxy, então eu realmente não preciso montá-lo para que eu possa mudá-lo o tempo todo.
‫Nós realmente não precisamos mudar
‫Eu só quero que ele funcione. Certo? Então, vou construí-lo. Deixe-o sentar no cache da imagem. Uma vez que é
‫construído pela primeira vez, não precisará ser realmente reconstruído com muita frequência.
‫Então eu vou sair daqui.
‫Então, quando eu estiver editando e desenvolvendo no meu site, eu vou ter essa configuração
‫para que eu possa fazer edições ao vivo. Se voltarmos para cá e faço um
‫engate, arrase o que aconteceu.
‫Primeiro criou a rede.
‫Isso é uma coisa normal. Isso faz isso.
‫Então, é visto que o serviço de proxy não possui a imagem que está procurando. Então, vai construir
‫isso.
‫Então, está tirando o Dockerfile e criando isso, assim como ele faria um comando de compilação do docker normal.
‫Então está me dando esta dica útil para me informar que ele construiu a imagem desta vez porque
‫não conseguiu encontrá-la.
‫Mas no futuro, se eu precisar mudar essa imagem, eu vou precisar usar a compilação de
‫compilação docker ou o docker compor comandos build. pode realmente criar os contêineres.
‫Agora que tem a imagem, Então está começando meu servidor web e meu servidor proxy.
‫Se tudo funcionasse corretamente, eu poderia conseguir um localhost. Ele puxou meu modelo padrão aqui, que é
‫um modelo de inicialização na verdade.
‫Parece que tudo funciona.
‫Na verdade, eu vou até aqui e posso ver todos os meus logs chegando e, obviamente, há muitos recursos. Há uma entrada de log para
‫cada um e vai passar pelo proxy e pelo servidor da web.
‫Como eu liguei esse diretório para edição, eu realmente posso voltar para o meu editor. Como desenvolvedor web, eu poderia entrar e,
‫talvez, você sabe, editar algo no site. pequeno título aqui em cima.
‫Talvez eu vá para o título inicial do bootstrap, que deve ser este
‫Vou salvar esse arquivo. Então, se eu atualizar, meu site está atualizado por causa desse link de montagem novamente.
‫Este é um ótimo exemplo de uma configuração de desenvolvedor muito comum onde você precisa criar algumas
‫imagens personalizadas localmente.
‫Você também precisa montar alguns arquivos em seu aplicativo para que você possa editá-los em tempo de execução.
‫E, é claro, se isso precisasse ser um aplicativo com base em banco de dados, eu simplesmente adicionaria um terceiro
‫serviço aqui para o servidor de banco de dados. Então, eu vou voltar e fazer minha limpeza.
‫Você notará que, por padrão, não irá realmente excluir essa imagem.
‫Você notará no topo aqui, temos o nginx personalizado que ele construiu. Mas há um comando docker
‫compose down.
‫Se você olhar para a ajuda, você verá que existe uma opção rmi que realmente remove imagens que pode
‫ter construído ou pode estar usando.
‫Há esta opção real aqui diz: "remova apenas as imagens que não possuem uma marca personalizada definida pelo campo
‫da imagem. "Uma coisa
‫que eu poderia fazer aqui se eu quisesse tornar isso um pouco mais automatizado, eu poderia simplesmente tirar esse
‫comando de imagem ali mesmo. Vamos apenas remover isso. Então eu quero limpar muito rápido. imagem.
‫Só vou remover minha imagem docker rm personalizado. Como você pode ver, foi lá.
‫Tudo bem. Eu quero fazer o docker compor novamente.
‫E desta vez vamos fazer um -d.
‫Você notará ao longo destes exemplos de Compose, que realmente nomeia contêineres, volumes e redes com
‫o nome do diretório como o nome do projeto.
‫Isso é realmente algo em Compose onde, para evitar conflitos de nomes, ele
‫sempre adicionará o nome do diretório no início de todos os recursos para que eles não entrem em
‫conflito com outros.
‫Você pode realmente alterar esse nome de proxy através da linha de comando.
‫Se você verificar, compile a documentação.
‫Mas o ponto que eu queria fazer aqui é se eu fizer uma imagem docker aqui, você verá que ele realmente nomeou
‫minha imagem para mim.
‫Então eu não tecnicamente tenho que usar essa opção de imagem.
‫Mas se eu quisesse um nome específico para isso, talvez eu pudesse identificá-lo mais tarde, eu poderia.
‫A razão pela qual eu estava trazendo isso é que isso é realmente um pouco mais limpo, porque o que eu
‫posso fazer é que o docker compõe para baixo e lembre-se na ajuda, disse que eu poderia usar um tipo de rmi. do Docker limpo, eu posso fazer o local da RMI.
‫Então, quando eu limpo, e eu gosto de manter meu ambiente
‫O que isso fará é realmente excluir essas imagens também.
‫Você verá aqui na parte inferior que apagou a imagem.
‫Não é algo que eu faço o tempo todo, mas talvez eu tenha um grande projeto com muitas
‫imagens personalizadas e não quero que exploda meu sistema quando não estiver desenvolvendo nesse projeto, vou
‫usar o rmi local , e sempre acompanhará as imagens personalizadas que ele deve criar.
‫ele irá excluir todas as imagens que foram usadas neste projeto, o que talvez você não queira fazer,
‫porque neste caso, ele pode excluir o servidor httpd Apache, e você pode querer que essa imagem fique por um tempo.
‫Claro, aqui se eu usar o todo, ESTÁ BEM.
‫Você aprendeu muito sobre compor nesta seção.
‫Nós vamos usar o Compose ao longo do resto deste curso.
‫Continuaremos construindo essas habilidades à medida que avançarmos.