
Tomcat은 Java Servlet과 JSP를 실행하기 위한 서블릿 컨테이너(JDK 필요)
도커는 애플리케이션과 그 실행 환경을 분리하고 격리하는 컨테이너화 기술을 제공하는 플랫폼입니다. 이것은 애플리케이션의 이식성을 향상시키고 다양한 환경에서 일관성 있게 실행할 수 있도록 도와줍니다.

나는 연습할 때 docker desktop 사용했음
docker에 app파일인 jar이랑 os소프트웨어를 넣어주면 둘이 packaging을 한다
1) Dockerfile에 필요한 파일들을 이미지에 포함
ex) jar배포 파일이면 jdk와 jar파일, os가 필요 (maven, gradle필요 x)
2) 이미지 생성
3) 이미지를 이용해 컨테이너 실행(테스트)
4) virtual box, ec2 서버로 돌아와서 가상서버에 다시 docker 설치
5) 개발 os에서 생성한 이미지를 서버os로 전송
6) docker 이미지 실행
docker 장점)
1. 아하 예를들면 서버에 app이 두개인데 jdk 버전이 다르면 골치아프니까 docker 사용한다는거네 격리할 수 있게
docker-compose는 여러개의 docker컨테이너를 한번에 관리할 수 있도록 도와주는 도구
--> 여러개의 컨테이너를 한번에 설정하고 실행
docker : 하나의 컨테이너
docker compose : 여러개의 컨테이너( 단 여러개의 프로젝트가 아니라 하나의 프로젝트 안에서 실행환경을 나누어서 편하게 관리하기 위한 도구)
docekr compose 에서 설정할 부분
application server 이미지 : jdk, jar배포파일 ++ os
Db server 이미지 : DB port, os
이걸 각각의 os에 들어가서 힘들게 하나씩 실행시키는 것보다 각각의 서버를 한번에 관리하고 한번에 실행시킨다는게 엄청난 강점인 것 같다.
보통 docker-compose.yml 파일을 만들어두고 그 이후에는 이 파일을 사용해서 계속 실행하고 관리하는 방식이다.
한프로젝트에서 실행환경을 여러개로 나눠서 편하게 실행할 수 있다니...
아 이해했어 그냥 이미지화 시켜서 배포시켜 실행하는 목적이구나 약간 조금더 관리나 대규모 데이터를 받아들이려면 docker 에다가 aws 를 접목시켜야된다는거지
네, 정확하게 이해하셨습니다! Docker는 애플리케이션을 컨테이너화하여 배포하고 실행하는 데 매우 효과적이지만, 대규모 데이터를 처리하고 인프라를 더 세밀하게 관리하기 위해서는 Docker와 AWS 같은 클라우드 플랫폼을 결합하는 것이 필요합니다.
즉, Docker로 애플리케이션을 컨테이너화하여 쉽게 배포하고, 이를 AWS와 같은 클라우드 서비스에 배포함으로써 서버 확장성, 자동화, 대규모 데이터 처리 등의 기능을 AWS를 통해 얻을 수 있습니다.
아 이해했어 결국에는 docker 서버가 내 local 에서 가상화 서버로 있는거잖아 그래서 내 local을 거쳐야하는데 docker는 또 독립된 환경이어서 통로가 필요한거구나
따라서 local 3306포트를 제외하고 3307:3306 포트로 로컬과 docker db 포트 연결