본문 바로가기

Docker 시작하기 - RestAPI편

2) Spring Boot REST API를 Docker Image로 만들기

반응형

앞에서 우분투 서버에 Docker를 설치하고 Hellow world 까지 테스트를 마쳤다.

 

이제 만들어둔 Spring boot Rest API  jar 파일을 서버에 올리고 Docker image를 만들어보자.

 

프로젝트 폴더 밑에 Dockerfile을 만들자. ( 어디에 있어도 상관은 없는데 Dockerfile 의 형상관리를 위해서..)

Dockerfile은 아래처럼 만들었다.

# Start with a base image containing Java runtime
FROM java:8

# Add Author info
LABEL maintainer="devracoon@naver.com"

# Add a volume to /tmp
VOLUME /tmp

# Make port 8080 available to the world outside this container
EXPOSE 8080

# docker build --build-arg JAR_FILE=my_react_app-0.0.1-SNAPSHOT.jar .
# The application's jar file 
ARG JAR_FILE

# Add the application's jar to the container
COPY ${JAR_FILE} my_react_app.jar

# Run the jar file
ENTRYPOINT ["java","-jar","/my_react_app.jar"]

해당 Dockerfile과 my_react_app-0.0.1-SNAPSHOT.jar 을 원하는 폴더에 저장한다.

 

docker build --build-arg JAR_FILE=my_react_app-0.0.1-SNAPSHOT.jar -t my_react_app .

를 실행한다.  혹  Got permission denied while trying to connect to the Docker daemon .... 

이런 에러가 나타나면 docker 를 root로 설치하고 다른 유저로 들어가 docker build 를 했기이다.

 

해결방법 : 아래 코드를 실행하고 완전히 로그아웃 후 재로그인 하고 다시 docker build를 실행한다.

$ sudo usermod -a -G docker $USER
$ sudo service docker restart

 

그러면 아래처럼 build가 정상적으로 되는것을 볼수 있다.

이제 만들어진 docker image로 docker container를 만들어보자 

docker create --name API_SERVER1 -p 8080:8080 my_react_app:latest

docker ps 명령어를 통해 실행중인 docker container를 확인 할 수 있다.

 

만들어진 container를 실행시켜 보자 

docker start API_SERVER1

 

이제 외부에서 api가 정상적으로 호출되지 확인해 보겠다.

 

Postman을 통해 테스트 한 결과 정상적으로 가져오는것을 확인 할 수있다.

 

혹시 외부에서 호출이 안되는 이유는 클라우드 instance의 방화벽 설정 때문이다. 방화벽 설정에서 8080 포트를 열어 주어야만 접속이 가능하다. 

 

다음은 docker에서  log확인하는 방법에 대해 공부해보자.