Local에서만 테스트 하던 springboot 서버를 docker 를 통해서 띄우는 방법을 공유한다.
먼저 docker 를 띄우려면 docker image가 있어야한다.
dockerfile 관련해서는 아래 참고 포스팅 참고 바란다.
필자가 사용한 dockerfile은 아래와 같다.
FROM openjdk:17-oracle ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] |
사용하는 java 는 17버전이고 jar 파일을 app이라는 이름으로 복사하여 사용하였다.
docker 실행 명령어는 다음과 같다.
-> docker run -p 8080:8080 springtest/test
-p 를 통해서 8080을 맞춰줬다.
주의점은 local에서 돌릴시 yml 파일에 db 정보를 localhost:3306 으로 해서 설정을 해두었고,
로컬에서는 실행하는데 문제가 없었다.
하지만 docker 를 통해서 container 가 실행이 되면서 localhost 경로의 db를 못찾았다.
그래서 spring 이 서버가 기동이 안되고 jdbc connection error 가 발생하였다.
(com.mysql.cj.jdbc.exceptions.communicationsexception: communications link failure)
그럴 경우 yml 파일에서 db 설정 부분에 hostname을 localhost 나 127.0.0.1 이 아닌.
url: jdbc:mysql://host.docker.internal:3306/...
으로 지정하였다.
(다시 로컬에서 기동할때는 변경해줘야한다)
참고 포스팅
https://thenicesj.tistory.com/723
[Docker] Dockerfile 만들기
Docker 의 container 를 띄우기 위해서는 docker image 가 필요하며 https://hub.docker.com/ Docker Hub Container Image Library | App Containerization Deliver your business through Docker Hub Package and publish apps and plugins as containers in D
thenicesj.tistory.com
'IT > Docker.K8S' 카테고리의 다른 글
[K8S] nip.io 란? (15) | 2024.04.05 |
---|---|
[Docker] Oracle (19.3 C) (37) | 2023.11.10 |
[Docker] Dockerfile 만들기 (54) | 2023.10.18 |
docker-compose (50) | 2023.10.03 |
PV, PVC (Persistent Volume Claim) (50) | 2023.09.23 |
댓글