앞에서 우분투 서버에 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확인하는 방법에 대해 공부해보자.
'Docker 시작하기 - RestAPI편' 카테고리의 다른 글
5) 쿠버네티스 CircleCI를 이용해 무중단 배포하기 (0) | 2021.01.06 |
---|---|
4) Kubernetes 로 Docker 배포하기 (0) | 2020.12.21 |
3) Spring Boot Rest API Docker log 보기 (0) | 2020.12.10 |
1) Docker 시작하기 (0) | 2020.12.08 |