2024. 1. 20. 00:05ㆍSpring Boot
우선 이미지를 만들기 위해서는
Dockerfile이라는 파일을 만들어
이미지를 어떻게 만들지 설정한다


이 파일에 이미지를 만들 설정을 넣어주는데
우선
FROM에 사용하는 Java JDK를 설정한다
위 예시는 이미지를 Java 17 JDK를 이용하고 Alpine Linux로 돌린다는 의미이다
ARG는 변수 설정이다 JAR_FILE에 사용할 JAR를 넣어준다
위 예시는 Dockerfile과 JAR파일이 같은 directory에 있어서 따로 경로는 지정하지 않았다
COPY로 변수로 설정한 JAR 파일을 원하는 이름으로 이미지에 저장한다
ENTRYPOINT로 이미지가 실행시 실행할 명령어를 적용한다
Dockerfile이 다 만들어졌으면 docker build를 같은 경로에서 실행한다


-t 명령어는 이미지 이름을 지정하기 위해서 넣은 명령어다
또한 이미지 이름에 대문자는 오류가 날 수 있으니 쓰면 안 된다


docker images 명령어로 확인해보면 정상적으로 이미지가 만들어진 것은 볼 수 있다
container에 image를 실어서 실행하고 싶으면

docker run -it -p 5000:5000 --name mycontainer myspring1
-p 5000:5000은 포트 포워딩을 설정해준 것인데 host의 포트 5000에 들어온 요청은 container 포트 5000으로 보내라는 뜻 이다.
도커는 가상의 독립적인 공간을 사용하기 때문에 Docker가 돌아가는 host에 들어온 요청 container로 넘겨주려면 포트 포워딩을 해야한다
--name은 사용할 container 이름을 넣어주면 된다
-it 컨테이너와 상호작용하는 대화형 모드로 컨테이너 내부의 터미널에 접속 내부에서 명령어를 실행하고 터미널의 세션을 유지 할 수 있게하는 명령어다
위에서 말했다 싶이 Docker의 Container는 가상의 독립적인 공간에서 실행된다.
따라서 Spring Boot에서 host에 있는 locall database를 사용해서
설정을 url = localhost:27017와 같이 설정해 놓으면 동작하지 않는다
왜냐하면 이럴 경우 Container의 27017 포트에 접속하지
데이터 베이스가 있는 host 포트 27017에 접속하지 않기 때문이다
따라서 설정을 바꾸어 주어야 한다.

위와 같이 localhost 대신 host.docker.internal로 바꾸어 주면
정상적으로 host에 있는 포트로 접속한다.
'Spring Boot' 카테고리의 다른 글
| RestController (0) | 2024.01.28 |
|---|---|
| Oauth2 by Google (0) | 2024.01.22 |
| MongoDB Reference (1) | 2024.01.19 |
| Https (0) | 2024.01.12 |
| MySQL (0) | 2024.01.12 |