팀프로젝트를 시작하면서 팀원들과 개발환경을 통일하기 위하며 도커를 공부하게 되었다.
도커 프로그램을 잘 알지못하는 상태라 유투브 영상과 책을 보며 이론을 어느정도 안다고 생각했지만 막상 도커파일을 제작하려고하니 톰캣서버는 작동이 되지만 넣어준 war 파일을 인식하지 못하여 계속 404 오류가 나왔다.
다른 팀원들의 도움을 받아 많은 시행착오를 겪었지만 팀원의 컴퓨터에서는 작동을 하고(도커파일 사용x) 본인의 컴퓨터에서는 작동하지 않아 같이 알아보는것도 무의미해지던 중 war파일을 복사하지 않고 아니라 톰캣자체만 실행해보면 어떨까 싶어 실행 해보았는데 톰캣자체도 실행되지않아 war파일 문제가 아니라는것을 알게되었다.
톰캣9버전을 다운로드받고
기존에 ROOT폴더를 삭제해준 뒤
도커파일과 같은 선상에 담아둔 war파일을 이미지 안에있는 ROOT파일로 옮겨담아 주었다.
외부 포트번호와 연결할 이미지 내부포트번호를 지정해주었다.
외부포트번호를 8082로 연결해서 화면을 띄우니 404에러가 나왔다.
처음에 오류를 검색하니 저 화면이 뜨면 톰캣은 연결이 됐지만 내부에서 war파일을 찾지못하면 저렇게 오류가 나온다는 글이 많았다. 그래서 당연히 톰캣은 연결됐을꺼라고 생각하고 그 쪽을 의심해보지 않은 내탓이다.
우선 저렇게 오류가 났을 경우 생성한 도커 컨테이너에 war파일이 제대로 생성되어 있는지 확인해보았다.
터미널 창에
$ docker ps
를 검색하면 지금 도커에서 돌아가고 있는 컨터이너를 확인 할 수있다.
docker exec -it [내가생성해준 컨테이너 이름 또는 컨테이너ID] /bin/bash
docker exec -it tomtom /bin/bash
명령어를 실행하면 생성한 컨테이너로 접속가능하다.
컨테이너에 접속한 채로
ls
명령어를 입력하면 컨테이너 안에 있는 폴더의 리스트를 확인 할 수 있다.
cd webapps
webapps에 접속 후
ls
를 검색하면
webapps안에 있는 파일을 볼수있다.
위와 마찬가지로
cd ROOT
ROOT에 접속 후
ls
를 검색하면 ROOT안에 있는 파일들을 볼 수있으며, 내가 만든 war파일이 제대로 들어가있는걸 확인 할 수있다.
이 때 톰캣오류를 의심했어야하는데 계속 war 파일을 의심하며 war 파일을 구동할때 필요한 로컬에 설치되어있는 자바, 오라클 , 톰캣도 삭제해보고 ( 이 때 , 다른팀원분이 war파일 import 해보면 lib에 담겨있는 jar파일들이 빌드패스가 안되어있다고 빌드패스 후 새로 war파일 export해서 도커에 올리니 잘 작동한다고 하셨다. 다음에 안된다면 이부분도 확인해보는게 좋겠다.) 새벽까지 난리를 쳤지만 딱히 실행이 되진 않았다.
다음날 도커파일을 이용하지 않고 터미널로 톰캣서버부터 하나씩 확인해가는 과정중 톰캣이 그냥 문제였던것을 알게되었다.
도커 톰캣 설치
docker run -d -it -p [로컬에서 접근할 포트번호]:8080 --name [생성할 컨테이너 이름] [다운로드할 톰캣버전]
docker run -d -it -p 8888:8080 --name tomom tomcat:9
톰캣을 설치 후 localhost:8888 로 접근하면 tomcat 홈페이지가 나와야한다고 했다.
하지만 내가 본 화면은 절망스러운 404..........
tomom
이 때부터는 톰캣 오류를 해결하는 방법을 찾기 시작했고 해결책은 간단했다.
내부 접근법은 위에서 작성했으므로 생략하였다.
docker exec -it tomom /bin/bash
mv webapps webapps2
mv webapps.dist/ webapps
exit
위에서 부터 한줄씩 입력해주었다.
여러 글들을 찾아 보았지만 아직 저 오류의 원인은 알지못하였고 해결방법만 돌아다닐 뿐이여서 아쉬웠다.
하나씩 입력하고 재접속 해보면 이렇게 귀여운 톰캣이 그려져있는 홈페이지가 나온다!
톰캣 서버오류를 해결했으므로 war파일을 톰캣서버가 돌아가고있는 컨테이너로 복사해주었다.
docker cp [복사할 파일이 있는 경로] tomtom:/usr/local/tomcat/webapps
윈도우 cmd창에 내가 복사하기 원하는 파일은 드래그로 가져다 놓으면 파일의 현재 경로를 알려준다 !
(파워쉘은 안됨 ㅎ)
파일을 복사한 후
docker exec -it tomom /bin/bash
ls
cd webapps
ls
cd ROOT
ls
순차적으로 명령어를 입력하여 제대로 ROOT.war 파일이 들어간것을 확인할 수 있다!
완료하고 잠시후 새로고침해보면 톰캣사이트에서 내가 넣은 파일로 변경된 것을 확인 할 수있다!