Diferença entre dockerfile e docker-compose Vamos entender brevemente o processo de uso do docker, que é dividido em construção de imagem e início de container.
Construção de imagem: ou seja, criar uma imagem que contenha o ambiente, código do programa, etc., necessários para instalação e operação. Esse processo de criação é feito usando um dockerfile.
Inicialização do Container: O container é finalmente executado puxando a imagem construída e iniciando o serviço por meio de uma série de instruções em execução (como mapeamento de portas, montagem externa de dados, variáveis de ambiente, etc.). Para um único container, isso pode ser executado via docker run.
Se envolver a execução de múltiplos containers (como orquestração de serviços), pode ser implementado via docker-compose, que pode facilmente rodar múltiplos containers como um serviço (claro, apenas um deles) e fornece a função de escalonar (escalonamento de serviços).
Resumo breve:
1.dockerfile: construa a imagem;
2. Execução no Docker: iniciar o contêiner;
3. docker-compose: iniciar o serviço;
Comece do início. Se você não usa docker, como constrói WordPress? Encontre um servidor primeiro, assuma que o sistema operacional seja Ubuntu e então siga a documentação passo a passo para digitar o comando e escrever a configuração, certo? E quanto ao uso do docker? Basta encontrar um servidor, não importa qual seja o sistema operacional, desde que suporte docker, docker roda Ubuntu, docker vai puxar a imagem mais recente do Ubuntu da fonte oficial, você pode pensar nisso como se tivesse aberto uma máquina virtual Ubuntu, e então instalar passo a passo, assim como acima.
No entanto, essa instalação tem uma desvantagem significativa: uma vez que o contêiner é excluído, você não tem nenhum trabalho realizado. Claro, você pode usar o docker commit para salvar como imagem, para que possa ser reutilizado.
Mas a imagem geralmente é grande, e se você compartilhar apenas a imagem, os outros não saberão o que sua imagem contém, o que não é propício para compartilhamento e reutilização. Uma solução intuitiva é escrever um script para registrar todo o processo de instalação, para que, quando você instalar novamente, possa executar o script. Um Dockerfile é um desses scripts que documenta o processo de criação de uma imagem. Com um Dockerfile, basta rodar a build docker. Você pode criar uma imagem, e o Dockerfile é um arquivo de texto, que é muito fácil de modificar.
Agora que você tem uma imagem do WordPress, só precisa rodar o docker para colocar o WordPress em funcionamento.
Se for só WordPress, isso já é suficiente. Mas muitas vezes, são necessárias múltiplas imagens para iniciar um serviço, como nginx, mysql, service de e-mail, etc. Mais comumente, nginx, mysql e smtp são todas imagens, e essas imagens trabalham juntas para servir a um projeto. Docker-Compose é a solução para esse problema. Informações sobre quais imagens seu projeto precisa, como configurar cada imagem, quais volumes montar, e assim por diante, estão incluídas em docker-compose.yml. Para iniciar um serviço, você só precisa compor no docker, e só precisa parar/desligar o docker compse para parar
Em resumo, um Dockerfile registra o processo de construção de uma única imagem, docker-compse.yml registra o processo de construção de um projeto (geralmente múltiplas imagens).
Você disse que alguns tutoriais usam dockerfile+docker-compose porque docker-compose.yml em si não tem informações sobre a construção da imagem, e se a imagem for puxada do registro docker, então o dockerfile não é necessário; Se a imagem precisa ser construída, então um arquivo Docker precisa ser fornecido.
docker-composeÉ um contêiner de orquestração. Por exemplo, você tem uma imagem PHP, uma imagem MySQL e uma imagem nginx. Se não houver docker-compose, toda vez que você iniciar, precisa digitar os parâmetros de inicialização de cada container, variáveis de ambiente, nome do container, especificar os parâmetros de link de diferentes containers e uma série de operações, o que é bastante trabalhoso. Depois de usar o docker-composer, você pode escrever esses comandos em docker-composer.yml arquivo de uma vez, e toda vez que iniciar todo o ambiente (incluindo 3 containers), só precisa digitar um comando docker-composer up.
dockerfileO papel é construir uma imagem espelhada do zero. Ele contém o ambiente, código de programa, etc., necessários para instalação e operação. Esse processo de criação é feito usando um dockerfile. Dockerfile - Preparado para o comando docker build para criar uma imagem independente, que também pode ser usada no docker-compose para build ao vivo docker-compose.yml - Um script para docker-compose que pode gerenciar múltiplos containers ao mesmo tempo, incluindo relacionamentos entre eles, se deve construir com uma imagem oficial ou com você mesmo, várias definições de portas de rede, definições de espaço de armazenamento, etc |