Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Apache Tomcat é uma implementação popular e de código aberto das tecnologias Java Servlet e Java Server. Este artigo mostra como criar um contêiner com o Apache Tomcat e um aplicativo Web simples, implantar o contêiner em um cluster do Service Fabric executando Linux e conectar-se ao aplicativo Web.
Para saber mais sobre o Apache Tomcat, consulte a página inicial do Apache Tomcat.
Pré-requisitos
Um computador de desenvolvimento executando:
Um registro de contêiner no Registro de Contêiner do Azure. Você pode criar um registro de contêiner em sua assinatura do Azure usando o portal do Azure ou a CLI do Azure.
Crie uma imagem do Tomcat e execute-a localmente
Siga as etapas nesta seção para criar uma imagem do Docker com base em uma imagem do Apache Tomcat e em um aplicativo Web simples e, em seguida, execute-a em um contêiner em seu sistema local.
Clone o repositório de amostras Service Fabric de introdução ao Java no seu computador de desenvolvimento.
git clone https://github.com/Azure-Samples/service-fabric-java-getting-started.git
Altere os diretórios para o diretório de exemplo do servidor Apache Tomcat (service-fabric-java-getting-started/container-apache-tomcat-web-server-sample):
cd service-fabric-java-getting-started/container-apache-tomcat-web-server-sample
Crie um arquivo do Docker com base na imagem oficial do Tomcat localizada no Docker Hub e no exemplo do servidor Tomcat. No diretório service-fabric-java-getting-started/container-apache-tomcat-web-server-sample , crie um arquivo chamado Dockerfile (sem extensão de arquivo). Adicione o seguinte ao Dockerfile e salve suas alterações:
FROM library/tomcat EXPOSE 8080 COPY ./ApacheTomcat /usr/local/tomcat
Consulte a referência do Dockerfile para obter mais informações.
Faça login no Docker e execute o
docker build
comando para criar a imagem que executa seu aplicativo Web:docker login docker build . -t tomcattest
Este comando cria a nova imagem usando as instruções no Dockerfile, nomeando (-t marcando) a imagem
tomcattest
. Para criar uma imagem de contêiner, a imagem base é baixada primeiro do Docker Hub e o aplicativo é adicionado a ela.Quando o comando build for concluído, execute o
docker images
comando para ver as informações na nova imagem:$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcattest latest 86838648aab6 2 minutes ago 194 MB
Verifique se a sua aplicação conteinerizada é executada localmente antes de a enviar para o registo do contentor.
docker run -itd --name tomcat-site -p 8080:8080 tomcattest.
-
--name
nomeia o contêiner, para que você possa se referir a ele usando um nome amigável em vez de sua ID. -
-p
especifica o mapeamento de porta entre o contêiner e o sistema operacional host.
Observação
A porta que você abre com o
-p
parâmetro deve ser a porta em que seu aplicativo Tomcat escuta as solicitações. No exemplo atual, há um conector configurado no arquivo ApacheTomcat/conf/server.xml para escutar solicitações HTTP na porta 8080. Essa porta é mapeada para a porta 8080 no host.Para saber mais sobre outros parâmetros, consulte a documentação de execução do Docker.
-
Para testar seu contêiner, abra um navegador e insira um dos seguintes URLs. Você verá uma variante da tela de boas-vindas "Hello World!" para cada URL.
http://localhost:8080/hello
http://localhost:8080/hello/sayhello
http://localhost:8080/hello/sayhi
Pare o contêiner e exclua-o do computador de desenvolvimento:
docker stop tomcat-site docker rm tomcat-site
Envie a imagem do Tomcat para o registro de contêineres
Agora que você verificou que a imagem do Tomcat é executada em um contentor no computador de desenvolvimento, publique-a num repositório num registo de contentores para minimizar interrupções nos fluxos de trabalho de desenvolvimento e implementação de imagens. Este artigo usa o Registro de Contêiner do Azure para armazenar a imagem, mas, com algumas modificações de etapas, você pode usar qualquer registro de contêiner escolhido. Neste artigo, o nome do registo é assumido como myregistry e o nome completo do registo é myregistry.azurecr.io. Altere-os adequadamente para o seu cenário.
Execute
docker login
para entrar no seu registro de contêiner com suas credenciais de registro.O exemplo a seguir passa o identificador e a senha de uma entidade de serviço do Microsoft Entra. Por exemplo, poderá ter atribuído um principal de serviço no seu registo para um cenário de automação. Ou, você pode entrar usando seu nome de usuário e senha do registro.
docker login myregistry.azurecr.io -u xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p myPassword
O comando a seguir cria uma tag, ou alias, da imagem, com um caminho totalmente qualificado para o seu registro. Este exemplo coloca a imagem no namespace
samples
para evitar confusão na raiz do registo.docker tag tomcattest myregistry.azurecr.io/samples/tomcattest
Envie a imagem para o registro do contêiner:
docker push myregistry.azurecr.io/samples/tomcattest
Criar e implantar o aplicativo de contêiner do Service Fabric
Agora que você enviou a imagem do Tomcat para um registro de contêiner, pode criar e implantar um aplicativo de contêiner do Service Fabric que extrai a imagem do Tomcat do seu registro e a executa como um serviço em contêiner em seu cluster.
Crie um novo diretório fora do clone local (fora da árvore de diretórios service-fabric-java-getting-started ). Mude para ele e use Yeoman para criar um andaime para um aplicativo de contêiner:
yo azuresfcontainer
Insira os seguintes valores quando solicitado:
- Nomeie seu aplicativo: ServiceFabricTomcat
- Nome do serviço de aplicativo: TomcatService
- Insira o nome da imagem: forneça a URL para a imagem do contêiner no registro do contêiner; por exemplo, myregistry.azurecr.io/samples/tomcattest.
- Comandos: Deixe isso em branco. Como essa imagem tem um ponto de entrada de carga de trabalho definido, você não precisa especificar explicitamente os comandos de entrada (comandos executados dentro do contêiner, o que manterá o contêiner em execução após a inicialização).
- Número de instâncias do aplicativo de contêiner convidado: 1
No manifesto de serviço (ServiceFabricTomcat/ServiceFabricTomcat/TomcatServicePkg/ServiceManifest.xml), adicione o seguinte XML sob a tag raiz ServiceManifest para abrir a porta na qual o seu aplicativo está a escutar solicitações. A tag Endpoint declara o protocolo e a porta para o ponto de extremidade. Para este artigo, o serviço conteinerizado escuta na porta 8080:
<Resources>
<Endpoints>
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="endpointTest" Port="8080" Protocol="tcp"/>
</Endpoints>
</Resources>
- No manifesto do aplicativo (ServiceFabricTomcat/ServiceFabricTomcat/ApplicationManifest.xml), sob a marca ServiceManifestImport , adicione o seguinte XML. Substitua AccountName e Password na tag RepositoryCredentials pelo nome do seu registro de contêiner e a senha necessária para entrar nele.
<Policies>
<ContainerHostPolicies CodePackageRef="Code">
<PortBinding ContainerPort="8080" EndpointRef="endpointTest"/>
<RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
</ContainerHostPolicies>
</Policies>
A tag ContainerHostPolicies especifica políticas para ativar hosts de contêiner.
- A tag PortBinding configura a política de mapeamento de porta para porta do contêiner. O atributo ContainerPort é definido como 8080 porque o contêiner expõe a porta 8080, conforme especificado no Dockerfile. O atributo EndpointRef é definido como "endpointTest", o ponto de extremidade definido no manifesto de serviço na etapa anterior. Assim, as solicitações de entrada para o serviço na porta 8080 são mapeadas para a porta 8080 no contêiner.
- A tag RepositoryCredentials especifica as credenciais que o contêiner precisa para se autenticar no repositório (privado) de onde extrai a imagem. Você não precisará dessa política se a imagem for extraída de um repositório público.
- Na pasta ServiceFabricTomcat, ligue-se ao cluster do Service Fabric.
Para se conectar ao cluster local do Service Fabric, execute:
sfctl cluster select --endpoint http://localhost:19080
Para se conectar a um cluster seguro do Azure, verifique se o certificado do cliente está presente como um arquivo .pem no diretório ServiceFabricTomcat e execute:
sfctl cluster select --endpoint https://PublicIPorFQDN:19080 -pem your-certificate.pem -no-verify
No comando anterior, substitua
your-certificate.pem
pelo nome do arquivo de certificado do cliente. Em ambientes de desenvolvimento e teste, o certificado de cluster é frequentemente usado como o certificado do cliente. Se o certificado não for autoassinado, omita o-no-verify
parâmetro.Normalmente, os certificados de cluster são baixados localmente como arquivos .pfx. Se ainda não tiver o certificado no formato PEM, pode executar o seguinte comando para criar um ficheiro .pem a partir de um ficheiro .pfx:
openssl pkcs12 -in your-certificate.pfx -out your-certificate.pem -nodes -passin pass:your-pfx-password
Se o seu arquivo .pfx não estiver protegido por senha, use
-passin pass:
para o último parâmetro.
Execute o script de instalação fornecido no modelo para implantar o aplicativo no cluster. O script copia o pacote do aplicativo para o armazenamento de imagens do cluster, registra o tipo de aplicativo e cria uma instância do aplicativo.
./install.sh
Depois de executar o script de instalação, abra um navegador e navegue até o Service Fabric Explorer:
- Em um cluster local, use
http://localhost:19080/Explorer
(substitua localhost pelo IP privado da VM se estiver usando o Vagrant no Mac OS X). - Em um cluster seguro do Azure, use
https://PublicIPorFQDN:19080/Explorer
.
Expanda o nó Aplicativos e observe que agora há uma entrada para seu tipo de aplicativo, ServiceFabricTomcatType, e outra para a primeira instância desse tipo. Pode levar alguns minutos para que o aplicativo seja totalmente implantado, portanto, seja paciente.
Para acessar o aplicativo no servidor Tomcat, abra uma janela do navegador e insira qualquer um dos seguintes URLs. Se implantaste no cluster local, usa localhost para PublicIPorFQDN. Você verá uma variante da tela de boas-vindas "Hello World!" para cada URL.
- http://PublicIPorFQDN:8080/hello
- http://PublicIPorFQDN:8080/hello/sayhello
- http://PublicIPorFQDN:8080/hello/sayhi
Limpeza
Use o script de desinstalação fornecido no modelo para excluir a instância do aplicativo do cluster e cancelar o registro do tipo de aplicativo.
./uninstall.sh
Depois de enviar a imagem para o registro do contêiner, você pode excluir a imagem local do computador de desenvolvimento:
docker rmi tomcattest
docker rmi myregistry.azurecr.io/samples/tomcattest
Próximos passos
- Para obter etapas rápidas sobre recursos adicionais de contêiner do Linux, leia Criar seu primeiro aplicativo de contêiner do Service Fabric no Linux.
- Para obter etapas mais detalhadas sobre contêineres Linux, leia o tutorial Criar um aplicativo de contêiner Linux .
- Saiba mais sobre como executar contêineres no Service Fabric.