Desenvolvimento para Docker. Ambiente local. Parte 1

Talvez uma das principais razões pelas quais eu gosto do docker seja que ele elimina a necessidade de instalar vários serviços em um computador. Isso inclui o servidor da web Apache ou Nginx, bancos de dados e outros componentes da infraestrutura do aplicativo. Toda a infraestrutura é registrada no arquivo de configuração docker-compose.yml e é iniciada com um único comando junto com seu aplicativo. Tudo o que um desenvolvedor que trabalha com uma janela de encaixe precisa é essencialmente uma própria janela de encaixe e um ambiente de desenvolvimento favorito e TUDO!

Para completar a narração adicional, você ainda precisa informar brevemente o que é o docker e seus conceitos básicos.

Portanto, o docker deve ser considerado como algum tipo de sistema de virtualização e contêiner.
Um dos conceitos básicos do docker é uma imagem. Uma imagem pode ser comparada com um arquivo (talvez até um programa executável), que contém algumas informações. O Docker pode iniciar a imagem. Uma imagem em execução é chamada de contêiner. Vários contêineres da mesma imagem podem ser lançados.

Então, o que está contido na imagem?

Pode ser uma imagem de um sistema operacional. Por exemplo, a imagem do ubuntu. Pode haver uma imagem com um banco de dados, um servidor web e php e com quase tudo. Começar esse conhecimento será suficiente para nós.

Supõe-se que o próprio leitor tenha a janela de encaixe e a composição de encaixe instaladas.

Começamos a implantar nosso ambiente, do simples ao mais complexo.

Lição número 1. Instalação do Nginx


Vamos tentar instalar apenas o Nginx primeiro. Crie docker-compose.yml com o seguinte conteúdo:

version: '3.0' services: nginx: image: nginx ports: - 80:80 

Em seguida, execute o comando docker-compose up -d e o seguinte deve aparecer em resposta:

 Creating network "lesson1_default" with the default driver Creating lesson1_nginx_1 ... done 

Digitamos http: // localhost / na barra de endereço do navegador e a saudação "Bem-vindo ao nginx!" Deve estar visível aos nossos olhos. Nesse caso, você está no caminho certo.

O que está acontecendo aqui?

Para entender a estrutura do arquivo de composição, recomendo consultar a documentação oficial , embora seja a melhor fonte de informações em inglês. A documentação descreve todas as opções possíveis que podem ser usadas.

Vamos analisar o arquivo apresentado:

  • versão - No início, a versão do arquivo de composição é declarada. Em vez de 3.0, você pode especificar 2.0. Menos não é mais suportado. As opções no arquivo de composição que estão disponíveis para uso dependem da versão.
  • serviços - anúncio de serviços
  • nginx - o nome do nosso serviço, é definido arbitrariamente a seu critério. Neste exemplo, corresponde ao nome da imagem.
  • image: nginx - o nome da imagem a ser usada.
  • ports - a diretiva declara encaminhamento de porta. 8080: 80 - essa entrada significa que a porta aberta 80 do contêiner corresponderá à porta 8080 na máquina host na qual a janela de encaixe está sendo executada. No exemplo do arquivo, a porta 80 no contêiner está conectada à porta 80 no seu computador.

Examinaremos a declaração da imagem com mais detalhes, a diretiva image: nginx.

O repositório principal de todas as imagens é o Docker Hub. Existem muitas imagens prontas diferentes lá (você pode coletar as suas, mas mais sobre isso mais tarde). A imagem nginx declarada é uma delas.

Quanto às portas "forward". Se você especificar uma correspondência 80:80, como no exemplo acima, o nginx estará disponível no localhost: 80 ou apenas localhost. Se a porta 80 já estiver ocupada, você poderá especificar 8080: 80. Em seguida, o site estará disponível no localhost: 8080. E, portanto, se você esqueceu completamente de especificar essa diretiva de portas, a porta estará disponível apenas dentro do contêiner e o nginx não estará mais acessível através do navegador.

O contêiner está em execução. E como realmente trabalhar com ele?

A instalação de um servidor Web pressupõe que queremos usá-lo para receber e visualizar páginas html do site. Há uma pergunta. Como posso transferir arquivos html para um contêiner? Os volumes nos ajudarão com isso

volumes


Vamos trazer nosso docker-compose.yml para o seguinte formato:

 version: '3.0' services: nginx: image: nginx ports: - 80:80 volumes: - ./html:/usr/share/nginx/html 

A diretiva volumes apareceu na nova, que diz que a pasta local ./html está sendo montada no contêiner no endereço / usr / share / nginx / html.

Ao montar, a pasta no endereço especificado dentro do contêiner é substituída pela pasta do computador local.

Para fazê-lo funcionar, crie a pasta html no mesmo nível que o arquivo docker-compose.yml e adicione o arquivo index.html com texto livre. Por exemplo, Olá do Docker!

E recriamos o contêiner com o mesmo comando docker-compose up -d
O Docker recria o contêiner.

 Recreating lesson1_nginx_1 ... done 

Verifique o resultado no navegador. E vemos: Olá do Docker! Tudo deu certo.

É importante observar que a pasta montada está disponível para alterações em tempo real. I.e. se alterarmos o texto no arquivo index.html ou adicionarmos um novo arquivo à pasta, todas essas alterações estarão disponíveis imediatamente dentro do contêiner. Essa importante função permite realizar o desenvolvimento através da janela de encaixe. Alteramos em nosso computador os arquivos, pastas montados e eles são exibidos imediatamente no contêiner do docker.

Parte 2 - Nginx + PHP + MySql + phpMyAdmin

Source: https://habr.com/ru/post/pt459972/


All Articles