Este artigo apresenta o método de usar o plug-in do Maven para criar imagens do Docker. Vou compartilhar com você. Os detalhes são os seguintes:
ferramenta
Se você quiser fazer um bom trabalho, primeiro afie suas ferramentas. Após a pesquisa, os seguintes plug-ins do Docker Maven entraram no meu campo de visão:
| Nome do plug -in | Endereço oficial |
|---|---|
| Docker-Maven-Plugin | https://github.com/spotify/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/fabric8io/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/bibryam/docker-maven-plugin |
O autor escolheu o primeiro de três dimensões: estrelas, documentar a facilidade de uso e a frequência de atualização.
Construa imagens do Docker com plugins
Uso simples
Vamos pegar o projeto anterior: Microservice-Discovery-eureka como exemplo:
Adicione o parágrafo a seguir em pom.xml
<FUBLE> <lugins> <!-plugin maven do docker, site oficial: https://github.com/spotify/docker-maven-plugin-> <lugin> <plugId> com.spotify </groupid> <stifactId> Docker-Maven-plugin </Artiftid> Considere com o [a-z0-9-_.], caso contrário, a construção não será bem-sucedida-> <!-Veja: https://github.com/spotify/docker-maven-plugin inválido reposmiMEnge ... apenas [a-z0-9-_.]-> <enMaMame> <mageM> <EntryPoint> ["java", "-jar", "/$ {Project.build.finalname} .jar"] </strirentPoint> <ursores> <course> <wargetPath>/</TargetPath> <Directório> $ {Project.build.directory} <earlory> <directório> </frifiguration> </flugin> </flugins> </fruct> Executar o comando:
MVN Pacote limpo Docker: Build
Vamos descobrir que o console tem algo como o seguinte:
[INFO] Building image microservice-discovery-eurekaStep 1 : FROM javaPulling from library/javaDigest: sha256:581a4afcbbedd8fdf194d597cb5106c1f91463024fb3a49a2d9f025165eb675fStatus: Downloaded newer image for java:latest ---> EA40C858F006STEP 2: Add /Microservice-Discovery-Eureka-0.0.1-snapshot.jar // ---> d1c174083bcaremoving Container intermediário 91913D847C20STEP 3: Entrada Java -jar /Microservice-Discovery-eureka-0.0.1-snapshot.jar ---> rodando em 0f2aeccdfd46 ---> d57b027ca65aremoving contêiner 0f2aeccdfd46successly construído d57B027Ca65A65A [Information) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Parabéns, a construção foi bem -sucedida.
Executamos imagens do Docker e descobrimos que a imagem foi construída com sucesso:
ID da imagem da tag repositório criou Sizemicroservice-Discovery-eureka mais recente D57B027CA65A cerca de um minuto atrás de 681,5 MB
Comece o espelho
Docker Run -P 8761: 8761 Microsserve-Discovery-Eureka
Vamos descobrir que a imagem do Docker começará muito rapidamente.
Teste de acesso
Visite http: // docker host ip: 8761 para ver a interface Eureka normalmente.
Construa com Dockerfile
O método acima é a maneira mais fácil. Muitas vezes, ainda precisamos construí -lo com a ajuda do Dockerfile. Primeiro, criamos o arquivo Dockerfile no diretório/Microservice-Discovery-Eureka/SRC/Main/Docker.
De Java: 8Volume/Tmpadd Microservice-Discovery-Eureka-0.0.1-Snapshot.jar App.Jarrun Bash -C 'Touch /App.Jar'expose 9000EntryPoint ["java", "-djava.SeCurity.Egd = File: /.v /./
Modificar Pom.xml
<FUBLE> <lugins> <!-plugin maven do docker, site oficial: https://github.com/spotify/docker-maven-plugin-> <lugin> <plugId> com.spotify </groupid> <stifactId> Docker-Maven-plugin </Artiftid> Cumprir com o [A-Z0-9-_.], caso contrário, a compilação não será bem-sucedida-> <!-Veja: https://github.com/spotify/docker-maven-plugin inválido Repository <semervice-discovery-ure the whats-dkin-enk! Dockerfile está localizado-> <DockerDirectory> $ {Project.Basedir}/src/main/Docker </dockerdirectory> <weReRsChemwer> <urce> <dargetPath>/</TargetPath> <Directory> $ {Project.build.dirortory} </Directory> <bistiry> $ {Projecty.Build.Build.Dirortory} </Directory> <directory> $ {Projeto </frifiguration> </flugin> </flugins> </fruct>Os outros passos são iguais. Dessa forma, você pode usar o DockerFile para criar imagens do Docker.
Empurrar a imagem do docker no dockerhub
Primeiro modifique o arquivo de configuração global do MAVEN Settings.xml e adicione o seguinte parágrafo
<Verters> <merver> <id> Docker-hub </dod> <nome do nome do seu nome de usuário do dockerhub </asername> <dasting> Sua senha do dockerHub </stess> <figuration> <e-mails> sua caixa de correio do dockerhub </maily> </figuration> </servers> </svers>
Crie um repo no DockerHub
O Projeto Pom.xml é modificado para o seguinte: Observe que o caminho do imageName deve ser consistente com o caminho do repo
<FUBLE> <lugins> <!-plugin maven do docker, site oficial: https://github.com/spotify/docker-maven-plugin-> <lugin> <plugId> com.spotify </groupid> <stifactId> Docker-Maven-plugin </Artiftid> comply with the regular [a-z0-9-_.], otherwise the build will not be successful --> <!-- See: https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed --> <!-- If you want to push the docker image to DockerHub, the path here must be the same as the repo path --> <imageName>eacdy/test</imageName> <!-- Specify the path where the Dockerfile is located --> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <incluir> $ {Project.build.FinalName} .jar </bitirt> </Resource> </Resources> <!- As duas linhas a seguir são usadas para o Docker Push to DockerHub. -> <VerverId> Docker-hub </viderId> <RegistryUrl> https://index.docker.io/v1/ </registryurl> </figuration> </plugin> </flugins> </fruct> Executar o comando:
MVN Pacote limpo Docker: Build -dpushimage
Depois que a construção for bem -sucedida, descobriremos que a imagem do Docker foi empurrada para o DockerHub.
Empurre a imagem para um repositório privado
Em muitos cenários, precisamos empurrar o espelho para um repositório privado. Para explicar a abrangência, o repositório privado usa um repositório privado que configura a autenticação de login.
Assim como pressionar para o DockerHub, primeiro precisamos modificar o arquivo de configuração global do MAVEN Settings.xml e adicionar o seguinte parágrafo
<Ver Servers> <merver> <id> Docker-Registry </id> <username> seu nome de usuário do dockerHub </asername> <dasting> Sua senha do dockerHub </stess> <figuration> <ailail> sua caixa de correio do dockerhub </symail> </figuration> </server> </servidors>
Altere o Pom.xml do projeto para o seguinte,
<Plugin> <voundid> com.spotify </foupid> <stifactId> Docker-maven-plugin </stutifactId> <versão> 0.4.12 </sisters> <figuration> <!-O caminho é: endereço do repositório privado/o caminho espelhado que você deseja-> <Magemnename> <dockerdirectory> $ {Project.Basedir}/src/main/Docker </dockerdirectory> <ursores> <course> <ventingPath>/</TargetPath> <Directory> $ {Project.Build.Directory} </Directory> <cluir> $ {Project.bild.FinalNaMaName}. Consistente com o arquivo de configuração do Maven Settings.xml-> <viderId> Docker-Registry </viderId> </figuration> </plugin> implementar:
MVN Pacote limpo Docker: Build -dpushimage
Aguarde um momento e você terá sucesso.
Se você deseja baixar a imagem do servidor privado, execute:
Docker Login Reg.itmuch.com # Em seguida, digite o número da conta e a senha do docker pule reg.itmuch.com/test-pull-registry
Vincule o plugin para executar em uma fase
Em muitos cenários, temos essas necessidades, por exemplo, ao executar o pacote MVN Clean, criaremos automaticamente uma imagem do Docker para nós. Está tudo bem? A resposta é sim. Só precisamos vincular o objetivo do plug -in a uma determinada fase.
A chamada fase e meta podem ser entendidos da seguinte forma: o formato de comando maven é: fase mvn: meta, por exemplo, mvn pacote docker: construir, então, o pacote e o docker são fases, e a construção é um objetivo.
Aqui está um exemplo:
Primeiro configure as propriedades:
<Properts> <docker.image.prefix> reg.itmuch.com </docker.image.prefix> </sperties>
Configuração do plug -in:
<build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </execution> </execution> </configuration> <MAGENAME> $ {DOCKER.IMAGE.PREFIX}/$ {Project.artifactId} </imagename> <FASTEIMAGE> java </as BASTEIMAGE> <Dorness> ["java", "-jar", "/$ {Project.build.FinalName} .jar" </" <Directory> $ {Project.build.directory} </diretório> <cluir> $ {Project.build.finalname} .jar </bitird> </Resource> </Resources> </Configuration> </Plugin> </flugins> </furt>Como acima, só precisamos adicionar:
<Comestions> <dentike> <id> Build-Image </dod> <shase> pacote </shase> <lecutes> <Goal> Build </Goal> </metas> </cemecution> </secutions>
Apenas faça. Este exemplo refere -se ao alvo de construção do Docker, ligado à fase da embalagem. Em outras palavras, o usuário precisa executar apenas o pacote MVN e executar automaticamente o MVN Docker: Build.
Exceções comuns
Não é possível conectar -se a 2375 (geralmente no Win7)
A cópia do código é a seguinte:
Conecte -se ao localhost: 2375 [localhost/127.0.0.1, localhost/0: 0: 0: 0: 0: 0: 0: 0: 1] Falha: Conexão Recusada: Connect -> [Ajuda 1]
Etapas da solução:
Digite Docker-Machine Env
$ Env: Docker_TLS_VERIFY = "1" $ Env: Docker_Host = "Tcp: //192.168.99.100: 2376" $ Env: Docker_Cert_Path = "C: /users/administrator/.docker/machine/machines/default
Adicionar configuração para plugins
<!-Uma das maneiras de resolver o problema de Conectar-se ao Localhost: 2375, certifique-se de ser consistente com Docker-Machine Env--> <Dockerhost> https://192.168.99.100:2376 </dockerhost> <DockerCertPath> c: /users/administrator/.docker/machine/machines/default </DockerCertPath>
Após a modificação, a configuração do plug-in se torna:
<PlugiM> <PupliD> com.spotify </frupid> <stifactId> Docker-maven-plugin </ArtifactId> <Versão> 0.4.12 </version> <figuration> <Imagename> eacdy/test </imageName> <dockerdirectory> $ {Project.basedir} Maneiras de resolver o problema de conectar-se ao localHost: 2375, certifique-se de ser consistente com o Docker-Machine Env-> <Dockerhost> https://192.168.99.100:2376 </dockerhost> <dockercerthpath> c: /Users/adMerTator/.Dockerhost> <Source> <vo targathpath>/</TargetPath> <Directory> $ {Project.build.directory} </diretório> <cluir> $ {project.build.finalname} .jar </incluir> </Resource> </Recursos> <!- Os seguintes linhas são usados para push para dockerhub. -> <VerverId> Docker-hub </viderId> <Registryurl> https://index.docker.io/v1/ </gistryurl> </figuration> </plugin> Referência: https://github.com/spotify/docker-maven-plugin/issues/116
PONTAS
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.