Implantação do Docker (5) - use o comando docker run para implantar e executar o projeto jar

       Para alguns projetos simples e únicos, você pode usar o comando docker run para executar o contêiner diretamente na linha de comando, sem criar uma imagem antecipadamente. Este é outro método de implantação simples em comparação com o uso anterior de arquivos dockerfile para executar projetos de implantação.Em relação ao método anterior de uso de arquivos dockerfile para executar implantações, consulte o seguinte artigo:

Implantação do Docker (1) - Transforme o pacote jar em uma imagem docker e inicie o contêiner

      Primeiro, coloque o pacote jar e os arquivos de configuração no diretório do projeto.

 

 Em seguida, execute o comando docker run diretamente neste diretório:

docker run -d -p 20238:20238 --name my-container-name \
-v $(pwd):/app \
-e CONFIG_FILE=/app/application.yml \
-e CONFIG_FILE_1=/app/config1.properties \
-w /app \
dockette/jdk8 java -Duser.timezone=GMT+08 -Dfile.encoding=utf-8 -jar /app/reportools-1.0.0.RELEASE.jar

Os resultados da execução são os seguintes: 

Explicações relacionadas sobre comandos do docker:

①: Com o parâmetro -v, você pode montar diretórios ou arquivos do host no contêiner. No seu comando, os arquivos de configuração, arquivos de modelo e arquivos JAR do aplicativo são montados nos caminhos correspondentes do contêiner com o parâmetro -v. About -v $(pwd):/app \ é o resultado simplificado do seguinte código:

-v /mnt/docker/files/ssexcel/config:/app/config \
-v /mnt/docker/files/ssexcel/template.xlsx:/app/template.xlsx \

-v /mnt/docker/files/ssexcel/reporttools-1.0.0.RELEASE.jar:/app/app.jar \

②: CONFIG_FILE é uma variável de ambiente usada para especificar o caminho do arquivo de configuração. No comando fornecido, defina a variável de ambiente CONFIG_FILE como /app/application.yml via -e CONFIG_FILE=/app/application.yml, ou seja, defina o caminho do arquivo de configuração do aplicativo como /app/application.yml. O parâmetro -e é usado para definir variáveis ​​de ambiente dentro do contêiner. No comando, duas variáveis ​​de ambiente CONFIG_FILE e CONFIG_FILE_1 são definidas.

-e faz parte das opções de linha de comando do Docker e é usado para definir variáveis ​​de ambiente dentro do contêiner. É usado para passar variáveis ​​de ambiente dentro do contêiner durante a execução do contêiner. Variáveis ​​de ambiente na forma de pares chave-valor podem ser definidas como variáveis ​​de ambiente dentro do contêiner usando a opção -e. Por exemplo, -e VAR_NAME=value define uma variável de ambiente chamada VAR_NAME com valor.

③: O parâmetro -d indica a execução do contêiner em modo de segundo plano (daemon). Isso permite que o contêiner continue rodando em segundo plano sem bloquear o terminal. Em seguida, o parâmetro -p 20238:20238 mapeia a porta 20238 do contêiner para a porta 20238 do host, para que os serviços dentro do contêiner possam ser acessados ​​por meio dessa porta no host.

Por fim, dockette/jdk8 é o nome da imagem especificada e java -jar app.jar é o comando a ser executado no contêiner.

④: Se você deseja adicionar uma conexão ao contêiner da biblioteca de dados com base nisso, você pode usar a função de rede do Docker para obter comunicação entre dois contêineres, um contêiner é usado para executar o arquivo JAR do aplicativo e o outro contêiner é usado Execute o serviço MySQL. Isso permite uma melhor dissociação e gerenciamento de aplicativos e bancos de dados. Modifique o comando da seguinte forma:

  1. Crie uma rede personalizada:

    docker network create my-network
  2. Execute o contêiner MySQL e conecte-o à rede:

    docker run -d --name mysql-container --network my-network -p <MySQL端口>:3306 -e MYSQL_ROOT_PASSWORD=<密码> mysql:5.6

    Substitua <MySQL端口>e <密码>pela porta e senha reais do MySQL.

  3. Execute o contêiner do aplicativo e conecte-o à mesma rede:

    docker run -d --name app-container --network my-network -p 20238:20238 \
    -v /mnt/docker/files/ssexcel/config:/app/config \
    -v /mnt/docker/files/ssexcel/template.xlsx:/app/template.xlsx \
    -e CONFIG_FILE=/app/config/application.yml \
    -e CONFIG_FILE_1=/app/config/config1.properties \
    -e DB_HOST=mysql-container -e DB_PORT=<MySQL端口> \
    -v /mnt/docker/files/ssexcel/reportools-1.0.0.RELEASE.jar:/app/app.jar \
    -w /app \
    openjdk:8 java -Duser.timezone=GMT+08 -Dfile.encoding=utf-8 -jar app.jar

    Observe que DB_HOSTo valor na variável de ambiente é mysql-container, que é o nome do contêiner MySQL, pois eles estão na mesma rede e podem se comunicar através do nome do contêiner.

Resumir

        Existem as seguintes diferenças entre a implantação de projetos usando o comando docker run e o arquivo Dockerfile:

comando de execução do docker:

        Use o comando docker run para executar o contêiner diretamente da linha de comando sem criar uma imagem antecipadamente. Os parâmetros e opções fornecidos na linha de comando definem a configuração e o comportamento de tempo de execução do contêiner. Adequado para cenários simples e não requer imagens Docker personalizadas.


Arquivo Docker:

        Use um Dockerfile para definir uma imagem personalizada que contenha configuração específica e pacotes de software. O arquivo Dockerfile descreve as etapas e instruções para construir uma imagem e gera a imagem durante o processo de construção. Você pode modificar livremente o conteúdo do Dockerfile de acordo com suas necessidades, adicionar dependências, arquivos de configuração, etc. Adequado para programas ou projetos complexos que exigem imagens personalizadas e podem precisar ser implantados em vários ambientes. Configurações de conteinerização mais avançadas podem ser obtidas usando Dockerfiles, como adicionar variáveis ​​de ambiente específicas, instalar pacotes de software necessários, configurar redes, etc. Além disso, o Dockerfile também pode ser integrado com ferramentas de CI/CD para obter integração e implantação automáticas e contínuas.

O método que você escolher usar depende de suas necessidades e cenários específicos:

  • Se for apenas uma conteinerização simples e nenhuma imagem personalizada for necessária, você poderá usar  docker run o comando.
  • Se o projeto for complexo, envolver vários componentes e configurações ou precisar ser implantado em ambientes diferentes, é recomendado usar o Dockerfile para construir uma imagem customizada. Isso permite melhor gerenciamento e reutilização de código e garante consistência em diferentes ambientes.

        Em resumo, o comando docker run é adequado para execução simples de contêineres, enquanto Dockerfile é adequado para construir imagens personalizadas e gerenciar projetos ou aplicativos complexos. A escolha de qual método usar depende das necessidades específicas e da complexidade do projeto.

Acho que você gosta

Origin blog.csdn.net/weixin_49171365/article/details/130470401
Recomendado
Clasificación