[E-commerce App] Docker 이미지 생성과 Public registry에 Push
Dockerfile을 이용해 user-service
라는 마이크로 서비스의 이미지 파일을 생성해보자.
방법
Dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/users-ws-0.1.jar users-service.jar
ENTRYPOINT ["java",
"-Djava.security.egd=file:/dev/./urandom",
"-jar",
"users-service.jar"]
FROM openjdk:8-jdk-alpine
- 베이스를8-jdk-alpine
로 한다.VOLUME /tmp
도커 엔진이 가지고 있는 가상의 디렉토리하고, 컨테이너 안의tmp
라는 폴더를 만들어서 볼륨을 마운트한다.COPY target/users-ws-0.1.jar users-service.jar
-target/users-ws-0.1.jar
파일을, 컨테이너 내부의users-service.jar
파일로 복사한다.
빌드 후 도커 허브에 업로드
# 빌드
$ docker build -t edowon0623/users-service:1.0 .
# 도커 허브에 업로드
$ docker push edowon0623/user-service:1.0
# 이미지 다운로드
$ docker pull edowon0623/user-service:1.0
user-service
이제 위 내용을 실제 프로젝트에서 진행해보자.
Dockerfile
FROM openjdk:17-ea-11-jdk-slim
VOLUME /tmp
COPY target/user-service-0.0.1-SNAPSHOT.jar UserService.jar
ENTRYPOINT ["java","-jar","UserService.jar"]
빌드 후 도커 허브에 업로드
인텔리제이 터미널을 사용해도 되고, iTerm을 사용해도 된다.
# 최신 버전으로 컴파일
$ mvn clean compile package -DskipTests=true
# clean은 기존 파일을 지운다.
# package 옵션으로 jar 파일까지 생성할 수 있다.
# 테스트 코드는 skip
# 이미지 파일 빌드
$ docker build -t ln8847/user-service:1.0 .
# 생성된 이미지 확인
$ docker images | grep user-service
# 도커 허브에 업로드
$ docker push ln8847/user-service:1.0
# 이미지 삭제
$ docker rmi [이미지 ID]
# 이미지 다운로드
$ docker pull ln8847/user-service:1.0
컴파일 후에 user-service-0.0.1-SNAPSHT.jar
파일이 생성되었다.
그리고 docker images
커맨드로 생성된 이미지를 확인해보자.
그리고 docker push ln8847/user-service:1.0
커맨드로 이미지를 푸시한 뒤에, 도커 허브에 접속해보면 아래와 같이 확인할 수 있다.
이제 방금 도커 허브에 올린 이미지를 내려받아보자.
그러기 위해 기존 이미지를 삭제한 뒤에 진행하자.
성공적으로 받아왔다!
docker run -d ln8847/user-service:1.0
커맨드로 컨테이너를 생성하고 실행할 수 있지만, 지금 하게되면 에러가 발생할 것이다.
이는 user-service
를 기동하는데 필요한 다른 서비스들이 지금은 없기 때문이다.
다음 글에서 user-service
를 제외한 다른 마이크로서비스들도 도커 이미지로 만들고,
해당 서비스들을 기동하는데 필요한 kafka, zipkin, rabbitmq, prometheus 등의 서비스들도 도커로 기동해볼 것이다.
💛 개인 공부 기록용 블로그입니다. 👻