O IDEA mais recente implementa rapidamente a implantação e operação de imagens Docker

fundo

Use a ideia com o docker para realizar todo o processo, desde o desenvolvimento, implantação e operação do javaweb.
Ambiente: docker configurado, contêiner mysql8 instalado, um projeto web do framework springBoot (incluindo swagger para facilitar o timing)

Abra a conexão remota do Docker

O arquivo docker.service correspondente não pode ser encontrado usando métodos online. A versão ou método de instalação pode ser diferente.
Encontre a localização do arquivo docker.service por meio do systemctl status docker:
Insira a descrição da imagem aqui
modifique o arquivo /etc/systemd/system/docker.service:

#ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

Reinicie o serviço Docker:

systemctl daemon-reload 
systemctl restart docker.service

A porta 2375 está aberta:

firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload

Após reiniciar, verifique se a porta 2375 está aberta:
http://192.168.137.188:2375/info
Insira a descrição da imagem aqui
Nota: Isto indica sucesso.

configuração do plug-in do docker do Idea

O Idea 2019 versão 3 possui docker integrado. Se não estiver integrado, instale você mesmo.
Insira a descrição da imagem aqui
Nota: docker - Após clicar em "+", preencha o nome da conexão e o ip do host linux: porta externa do docker

Conecte a ideia ao docker e familiarize-se com as interfaces relevantes e operações disponíveis: Insira a descrição da imagem aqui
Nota: Ele integra comandos básicos comuns, incluindo contêineres e imagens. Você pode estudar o uso específico sozinho e não é difícil.

Adicionar dockerfile ao aplicativo springboot

Insira a descrição da imagem aqui
Nota: No mesmo diretório do arquivo pom, o conteúdo do arquivo é o seguinte:

FROM openjdk:8u212-jre
MAINTAINER aliyu<2557170552@qq.com>

COPY target/myframe-0.0.1-SNAPSHOT.jar /myframe-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java", "-jar", "/myframe-0.0.1-SNAPSHOT.jar"]

Adicionar configuração de execução do docker

Insira a descrição da imagem aqui
Nota: 1. Clique com o botão direito em "editar configuração"
2. Clique em "+" e selecione docker
3. Selecione a conexão do docker definida anteriormente
4. O nome do dockerfile
5. A localização do diretório do dockerfile
6. Imagem do projeto e definição de versão
7. Executar imagem de construção Marque a caixa e nomeie o contêiner para que ele possa ser criado e executado após a criação da imagem.
8. Configure o mapeamento de portas entre o host e o contêiner
9. Configure o IP fixo do contêiner para evitar o problema de projetos semelhantes não conseguirem encontrar serviços ao executar IPs aleatórios. Para configuração de IP fixo, consulte: http://blog.java1234.com/blog/articles/628.html
ps: O contêiner mysql8 foi configurado e o IP padrão estará no mesmo segmento de rede que o IP aqui.
10. Você pode visualizar o comando aqui para facilitar a verificação de erros.
11. Antes de configurar e executar docker run, você precisa recompilar e empacotar o projeto:

clean package -U -DskipTest -P test

Nota: Durante o desenvolvimento, o host acessa o contêiner mysql no Linux e, quando o aplicativo é gerado como um tempo de execução do contêiner, o contêiner do aplicativo acessa o contêiner mysql. A configuração do mysql em yml é inconsistente, portanto, o arquivo de configuração test yml é usado especialmente para implantação do docker. ps: Os contêineres podem acessar uns aos outros, verifique o título "Outros - Comunicação entre contêineres".
Após a criação, você pode ver:
Insira a descrição da imagem aqui
Nota: Há mais um dockerFile para iniciar.

Execute a configuração de inicialização do docker

Clique em: Insira a descrição da imagem aqui
Nota: Você pode ver completamente o processo de empacotamento limpo do maven, bem como o processo de construção da imagem do docker, criar e iniciar o contêiner. Você pode até ver os logs de projetos de inicialização de contêineres

Teste o acesso à página inicial do swagger:
Insira a descrição da imagem aqui

outro

Comunicação entre contêineres

Antecedentes: Como não entendo como os contêineres se comunicam entre si, ao configurar a conexão mysql, a URL está sempre errada e problemas de conexão com o banco de dados são relatados.

O IP do host e a porta mapeada podem acessar o contêiner mysql8:
url: jdbc:mysql://192.168.137.188:3307/db_myframe?serverTimezone=GMT

No entanto, o acesso através do IP do host e da porta mapeada no contêiner myframe falha
porque a comunicação entre os contêineres é diferente.

Ele não pode ser acessado por meio de localhost: 3306. O localhost no contêiner docker não se refere ao localhost da máquina host.

O Docker cria uma placa de rede virtual durante o tempo de execução e a nomeia docker0.
Encontre o endereço IP 172.17.0.2 por meio do docker, inspecione o mysql8, mas observe que quando o contêiner acessa o contêiner, a porta precisa ser a porta do contêiner, não 3307 mapeada para o host.

Acho que você gosta

Origin blog.csdn.net/mofsfely2/article/details/108844138
Recomendado
Clasificación