2019/06/27 - [프로그래밍 공부/Etc] - Rest API - Swagger 사용하기
사용될 코드는 여기서 가져온 코드가 사용되므로 참고
Docker 는 기본(?)적으로 VM의 기능을 가지고 있기 때문에 ( 서버 )
컴퓨터가 가상화 기능을 사용할 수 있는지 우선 확인해봐야 한다.
물론 Docker는 VMware 처럼 기존 OS에 추가적으로 OS를 덧붙여 사용하는 방식이 아닌, Container로 들어가져 있기때문에 상당히 빠르고, 가볍게 사용이 가능하다.
Ctrl+alt+delete -> 작업관리자 -> 성능 의 오른쪽아래에 가상화를 지원하는지 확인이 가능하다.
지원을 한다면,
Docker 홈페이지에 가입하고 window 용으로 다운
정상적으로 설치가 되었다면 Terminal이 생성되었을 것이다.
boot에 작업하기전에 terminal 을 실행시켜서 고래 이미지 한번 보고 가자
여기에서 나오는 default ip 로 접속해야하니 기억해두기
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/resources/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
pom.xml에
플러그인을 추가하고, 잘보면 dockerDirectory의 경로 설정이 src/main/resources/docker로 되어있기때문에
(얼마든지 바꾸어도 상관없음)
그경로에 Dockerfile 이란녀석을 만들어준다.
FROM java:8
ADD backend-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
내용은 이런식으로
FROM 은 컨테이너에 자바8을 설치한다는 내용인데, Docker의 장점이 잘보이는 부분이다. 서버에서 프로그램을 실행할때, 자바를 깔아야한다던지 문제점이 있었는데, docker에선 컨테이너에 집어넣음으로서 배포시 바로 실행이 가능한 환경을 제공해준다.
ADD는 project명~ 을 app.jar로 복사한다는 내용
프로젝트명을 잘 모르겠다면, pom.xml에서 이부분을 참고해서 쓰면 된다
<groupId>com.example</groupId>
<artifactId>backend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>backend</name>
그다음 Docker terminal 에서 프로젝트 경로로 이동해준후,
./mvnw clean package docker:build 를 입력해준다
( gradle 환경이라면, ./gradle clean docker )
촤르르륵 떳다가 build success가 초록색으로 보일텐데,
그때 docker images 를 입력해보면 제대로 빌드됐는지 확인할 수 있다
springboot/backend 라는 이릅으로 저장이 되었고, FROM에 명시한대로 java 8이 생성이 되었다
Docker에서의 image는 container가 실행될 수 있는 모든 환경을 갖춘거라고 생각하면 된다
이제 Docker 서버에서 실행을 시켜보자.
$docker run -d -p 8080:8080 --name springboot/backend
--name은 없어도된다 default는 random으로 자동생성
-d : 백그라운드로 실행
-p : VM 의 포트를 8080으로 연결
그다음
$docker ps 를 입력했을때 무엇인가 뜬다면 제대로 실행되고 있다는 뜻이다.
현재 실행되고 있는 이미지
로그로도 확인을 해보면,
--name을 testDocker 로해놓았기때문에 ( 네임설정을 안했을 시에는 containerID로 조회하면된다)
$docker logs testDocker
이런식으로 백단이 실행중이라는 로그를 띄워주게 된다
그럼 아까전 default ip로 주어진 192.168.99.100:8080으로 접속하게 되면,
이렇게 접속에 성공한다.
(맨위에 링크걸어둔 프로젝트에서는 nuxt.js 가 프론트이기때문에 백단인 8080에 접속하면 json 형식의 데이터만 보여진다)
데이터도 확인을 해보아야 하기때문에 전 포스팅에서 설정해두었던 swagger로 접속해보자.
post -> hello world
get - > 화면에서 보여지는 것을 보니 잘 입력이 된다.
'프로그래밍 공부 > Etc' 카테고리의 다른 글
[Vault] KMS (0) | 2021.11.04 |
---|---|
audio tag에서 seekbar가 작동하지 않을때 (0) | 2021.09.17 |
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter (0) | 2021.03.10 |
[메모] activity launchMode 삽질 (0) | 2020.10.05 |
Rest API - Swagger 사용하기 (0) | 2019.06.27 |