Este artigo apresenta as técnicas para o uso de imagens do Maven Docker e as compartilha com você, como segue:
O MAVEN é uma das ferramentas de gerenciamento de projetos Java mais populares atualmente, fornecendo poderosos funções de gerenciamento de dependência de pacotes e funções de construção de aplicativos.
O Docker fornece imagens oficiais do Maven que podem ser usadas para gerenciar e criar aplicativos Java. Comparado à instalação diretamente da ferramenta Maven, o uso de imagens do Docker tem melhor portabilidade e pode ser facilmente comutado versões, o que é ideal para uso durante a integração contínua.
Para o uso do Maven Official Mirror, consulte a documentação de uso.
Usando o Alibaba Cloud para acelerar
A velocidade de download do armazém oficial da Maven na rede doméstica é realmente comovente. O uso da imagem Maven da Alibaba Cloud pode melhorar bastante a velocidade de download dos pacotes de software.
Podemos adicionar a configuração da imagem do Alibaba Cloud com base na imagem oficial do Maven. Seu código está disponível em https://github.com/aliyuncontainerService/Maven-Image
Seu arquivo de configuração Configuração.xml é o seguinte
<Configurações xmlns = "http://maven.apache.org/settings/1.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-inStance" xsi: schemalocation = "" htttttp://xmlschema-inStance "xsi: schemalocation =" "htttttp://xmlschema-inStance" xsi: schemalocation = "" htttttp://xmlschema-inStance "xsi: schemalocation =" "httttp.mlschema--nestance" xsi: schemalocation = "" htttttp://xmlschema-inStance "xsi: schemalocation =" https://maven.apache.org/xsd/settings-1.0.0.xsd "> <localrepository>/usr/share/maven/ref/repositório </localrepository> <flinpors> <flinfinus> <!-envia tudo mais <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> </flinfer> <inflor> <!-Isso é usado para direcionar os instantâneos públicos repositórios no perfil abaixo para um grupo de nexus diferente- <flinferof> public-snapshots </flinferof> <url> http://maven.aliyun.com/nexus/content/repositories/snapshots/ </erl> </espelho> </flingrors> </Configurações>
O serviço de contêiner em nuvem do Alibaba fornece imagens do docker pré-construído para uso direto do registro.cn-hangzhou.aliyuncs.com/acs/maven.
Podemos executar diretamente o seguinte comando no diretório atual, como usar o comando mvn para criar o aplicativo
Copie o código da seguinte forma: Docker Run -it - -RM - -NAME MAVEN -V "$ (PWD)":/usr/src/app -w/usr/src/app registry.cn-hangzhou.aliyuncs.com/acs/maven mvn limpo Instale
Se você deseja poder cache o repositório Maven Downloado, podemos usar o volume de arquivos do Docker para implementá -lo
Primeiro, execute o seguinte comando para criar um volume de arquivo chamado "Maven-Repo"
Docker Volume Create --Name Maven-Repo
Na chamada subsequente, monte -a para o diretório de download do repositório na imagem do Maven
Copy the code as follows: docker run -it --rm --name maven -v "$(pwd)":/usr/src/app -v maven-repo:/usr/share/maven/ref -w /usr/src/app registry.cn-hangzhou.aliyuncs.com/acs/maven mvn clean install
Dessa forma, o repositório Maven não será baixado sempre.
Otimize o DockerFile para melhorar a velocidade de construção
Podemos criar aplicações no Dockerfile e usar o mecanismo hierárquico de cache durante a construção do Docker para melhorar a velocidade de construção
Aqui está um exemplo de arquivo DockerFile.Build
De Registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8env my_home =/usr/src/apropriun mkdir -p $ my_homeworkdir $ my_homeadd pom.xml $ my_home# Obtenha todos os downloads ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify","clean","-FAIL-Never") Add Sourceadd. $ My_home# run maven verifyrun ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify"]
Um dos truques importantes é primeiro adicionar Pom.xml ao diretório de trabalho, usar o comando maven para baixar o pacote JAR exigido pelo aplicativo e adicione o arquivo de origem do aplicativo para compilação. Dessa forma, enquanto o Pom.xml não for atualizado, o pacote JAR de dependência não será baixado novamente, o que pode acelerar bastante a velocidade de construção da imagem.
Podemos compilar o aplicativo através do seguinte comando
Docker Build -t Builder -img -f Dockerfile.build.
Compilação de aplicativos separada e construção de imagens do docker
Para linguagens compiladas estáticas, geralmente precisamos separar o processo de compilação de aplicativos do processo de construção do espelho. Existem duas considerações principais:
Podemos copiar os resultados da compilação do aplicativo da imagem do Docker, como segue
Docker Build -t Builder -img -f Dockerfile.Build .Docker Create -Name Builder Builder -Imgdocker CP Builder:/usr/src/app/Target ./Target
Neste momento, o resultado da construção do Maven é copiado para o subdiretório "Target" do diretório atual.
Depois disso, podemos usar outro DockerFile para criar imagens de aplicativos. Não vou entrar em detalhes se tiver espaço limitado.
Resumir
Este artigo usa o Maven como exemplo para introduzir algumas técnicas comuns para o Docker na construção de aplicativos.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.