Amigos, estou tentando criar um ambiente em Docker para fazer os exercícios do curso, mas estou falhando miseravelmente. Meu Tomcat sobe, mas não encontra a aplicação. Alguém tem um exemplo de como eu poderia fazer isso?
Amigos, estou tentando criar um ambiente em Docker para fazer os exercícios do curso, mas estou falhando miseravelmente. Meu Tomcat sobe, mas não encontra a aplicação. Alguém tem um exemplo de como eu poderia fazer isso?
Talvez seja melhor eu mostrar o que estou fazendo. Estou seguindo um exemplo que encontrei neste artigo:
https://medium.com/@bishwas.scholar/java-servlet-with-docker-eac1ac6a87b
Meu Dockerfile:
FROM tomcat:9
COPY ./app /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["catalina.sh", "run"]
Meu docker-compose.yml:
version: '3'
services:
api:
image: webapp
restart: always
build:
context: .
volumes:
- ./app:/usr/local/tomcat/webapps
ports:
- "8080:8080"
Claramente, estou fazendo algo errado, mas não consegui identificar o quê.
Olá Vinícius! Tudo bem?
Que legal que você está tentando criar um ambiente em Docker para fazer os exercícios do curso! Realmente, pode ser um pouco complicado no começo, mas com um pouco de prática, você vai conseguir.
Quando você diz que o Tomcat sobe, mas não encontra a aplicação, pode ser que haja algum problema na configuração do Docker ou na configuração do Tomcat. Seria interessante verificar se o Docker está mapeando corretamente as portas para o Tomcat e se a aplicação está sendo implantada corretamente no Tomcat.
Uma dica que pode ajudar é utilizar o Docker Compose, que permite definir e executar aplicativos Docker com vários contêineres. Dessa forma, você pode definir a configuração do Tomcat e da aplicação em um arquivo YAML e executá-lo com um único comando.
Aqui está um exemplo de um arquivo docker-compose.yml para um ambiente com Tomcat e uma aplicação Java:
version: '3'
services:
tomcat:
image: tomcat:9.0
ports:
- "8080:8080"
volumes:
- ./webapps:/usr/local/tomcat/webapps
app:
build: .
ports:
- "8081:8080"
volumes:
- ./app:/usr/local/tomcat/webapps/app
Nesse exemplo, o Tomcat está sendo executado na porta 8080 e a aplicação está sendo executada na porta 8081. O diretório "webapps" é mapeado para o diretório correspondente no contêiner do Tomcat e o diretório "app" é mapeado para o diretório correspondente no contêiner da aplicação.
Espero que essa dica ajude! Se ainda tiver dúvidas, não hesite em perguntar.
Espero ter ajudado e bons estudos!
Otávio, obrigado por me ajudar! Modifiquei meu docker-compose.yml conforme sua sugestão, e ficou assim:
version: '3'
services:
tomcat:
image: tomcat:9.0
ports:
- "8080:8080"
volumes:
- ./webapps:/usr/local/tomcat/webapps
app:
build: .
ports:
- "8081:8080"
volumes:
- ./app:/usr/local/tomcat/webapps
Mas continuo com o mesmo erro no navegador:
Você está mapeando o diretório local "webapps" para o diretório correspondente no contêiner do Tomcat, o que significa que o Tomcat irá buscar a sua aplicação Java nesse diretório. Sua aplicação Java está nesse diretório? Confirma se os arquivos da sua aplicação estão no diretório "webapps" do contêiner do Tomcat
Pior que estão!
Vou para o meu plano B, montar o ambiente em uma VM Ubuntu. Obrigado, Otávio!