programing

도커 컨테이너에서 실행되는 Tomcat 8에 Java webapp 배포

fastcode 2023. 3. 1. 13:46
반응형

도커 컨테이너에서 실행되는 Tomcat 8에 Java webapp 배포

Tomcat과 Docker는 처음이라 이 질문의 어딘가에 Tomcat 기본이 없는 것 같습니다.

Spring Boot Restful 웹 서비스를 실행하는 Docker 컨테이너를 구축하여 정적 데이터만 반환하려고 합니다.이것은 모두 OSX에서 동작하고 있기 때문에 Boot2Docker도 사용하고 있습니다.

앱이 실행되는 컨테이너를 만들기 위해 Docker 파일을 직접 작성했습니다.

FROM tomcat:8.0.20-jre8

RUN mkdir /usr/local/tomcat/webapps/myapp

COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp/

이 Dockerfile은 정상적으로 동작하며 생성된 이미지에서 컨테이너를 시작할 수 있습니다.

docker build -t myapp .

docker run -it --rm -p 8888:8080 myapp

이 컨테이너는 올바르게 시작되고 오류가 없으며 앱이 배포되었다는 메시지가 표시됩니다.

22-Mar-2015 23:07:21.217 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 
Deploying web application directory /usr/local/tomcat/webapps/myapp

컨테이너에 myapp도 올바르게 포함되어 있습니다.도커 파일에 설명된 경로에 전쟁이 복사되었습니다.또한 Tomcat 기본 페이지로 이동하여 Tomcat이 실행 중인지 확인할 수 있으며, 모든 예를 누를 수도 있습니다.

이 문제에 대해 http://192.168.59.103:8888/myapp/getData로 이동하면 404가 표시됩니다.나는 이유를 잘 모르겠다.Tomcat으로의 .war 전개에 대해 뭔가 부족한 점이 있습니까?

복사하려고 합니다.war아래 디렉토리에 파일하다webapps. 전쟁 파일을 복사해야 합니다.webapps디렉토리로 이동합니다.

mkdir 명령어를 삭제하고war다음과 같은 파일:

COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war

Tomcat은 다음과 같은 경우에 전쟁을 추출합니다.autodeploy켜져 있습니다.

이거 오넬라이너 있어요.

그냥 뛰기만 하면 돼

docker run -v /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat

이렇게 하면 webapps 디렉토리에 워 파일이 복사되어 앱이 즉시 실행됩니다.

Tomcat은 다음에 복사된 전쟁만 추출합니다.webapps디렉토리로 이동합니다.바꾸다Dockerfile다음과 같습니다.

FROM tomcat:8.0.20-jre8
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war

webroot를 지정하지 않은 경우 다음과 같이 URL에 액세스해야 할 수 있습니다.

http://192.168.59.103:8888/myapp/getData

언급URL : https://stackoverflow.com/questions/29201262/deploying-java-webapp-to-tomcat-8-running-in-docker-container

반응형