프로젝트를 진행하면서, docker를 사용해 mariadb의 이미지를 내려받아 사용했었습니다.
하지만, 왜 사용하는지 몰랐고, 이제와서 봐도 당시에는 사용할 이유가 없었다고 생각이 됩니다....
(아,팀원들 간 mariadb의 버전 맞춰준거....? 그게 좋았으려나.... 흠...글쎄...)
여튼, 그래서 이번에는 저의 데스크탑의 로컬환경에서 진행하고 있는 프로젝트의 개발환경들을 이미지로 만들고
그것들을 노트북에 내려받아 진행해볼 생각입니다! 아마, 이게 도커의 장점이라고 판단이 되었습니다...!
어디서든 편리한 개발 환경....?!
1. SpringBoot 개발 환경을 Docker에,,
1-1 ) SpringBoot Build 과정
./gradlew build
먼저 springboot 프로젝트를 build합니다.
그럼 아마도, 첫번째 이미지(build.gradle)의 설정처럼
두 번째 이미지 build/libs 폴더에 jar파일이 생성될 것입니다.
1-2) Docker Build 과정
먼저 다음과 같이 백엔드(SpringBoot) 프로젝트의 root경로에
Dockerfile이라는 파일을 생성합니다. (이때, 확장자는 필요없습니다!!)
그리고, 그 안에 다음과 같이 적어줍니다.
FROM openjdk:8-jre-alpine
ENV APP_HOME=/usr/app/
WORKDIR $APP_HOME
COPY build/libs/*.jar application.jar
EXPOSE 8080
CMD ["java", "-jar", "application.jar"]
다 되셨다면, 원하는 태그를 YOUR_TAG안에 적고 docker를 build해줍니다.
이 때, 맨 뒤에 '.'(온점)은 꼭 추가해주셔야합니다.
docker build --tag YOUR_TAG .
이것으로 일단, SpringBoot의 이미지 생성은 마쳤습니다.
2. DB를 Docker에
그 전에 ! 일단 DB와 Backend 각각의 이미지를 연결해 줄 Network가 필요합니다.
YOUR_NETWORK_NAME안에 원하는 네트워크 이름을 적어 네트워크를 생성합니다.
docker network create YOUR_NETWORK_NAME
2-1) DB 생성
저는 일단 MariaDB를 사용할 것이기 때문에 다음과 같은 명령어를 이용해야합니다.
보통이라면, 3306:3306 까지가 끝이겠지만, 우리는 네트워크안에 DB를 연결해주어야하기 때문에 더 작성합니다.
YOUR_DB_NAME에 원하는 DB의 별명을 붙여줍니다.
docker run -d --name YOUR_DB_NAME -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --network YOUR_NETWORK_NAME mariadb
+) Docker Volume을 이용하면, SQL파일도 함께 저장하여 이미지를 생성할 수 있다. (21.03.26 추가)
3. 백엔드(SpringBoot) 실행
YOUR_BACKEND_NAME은 백엔드의 별명 / YOUR_DB_NAME은 DB의 별명 / YOUR_TAG 태그 (이 두개는 앞서 설정한 것과 동일하게 적어주어야합니다.)
docker run -it --name YOUR_BACKEND_NAME --network YOUR_NETWORK_NAME -p 8080:8080 YOUR_TAG
혹시, 이렇게 하고 연결이 되지않는다면, Application.yml 파일 중, datasourse.url의 localhost를 다음과 같이 DB의 별명으로 바꾸어주시면 됩니다.
끝!
'CS 지식 > Docker' 카테고리의 다른 글
Docker에 대한 고찰 (0) | 2021.02.25 |
---|