뚜벅이!
Mobile :)
뚜벅이!
전체 방문자
오늘
어제
  • 분류 전체보기 (53)
    • 코딩테스트 (16)
      • programmers level1 (7)
      • codility (9)
    • 프로그래밍 공부 (31)
      • Spring Boot (6)
      • Nuxt.js (5)
      • Node.js (3)
      • Etc (11)
      • Android (6)
    • 잡다한 글 (4)
    • 토이프로젝트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • AndroidX
  • nuxt
  • firebase
  • node
  • NavBar
  • nuxt.js
  • level1
  • lesson2
  • lesson3
  • programmers
  • token
  • docker
  • 프로그래머스
  • Spring
  • JS
  • lesson4
  • 연습
  • 스킬체크테스트
  • Vue.js
  • Kotlin
  • Spring boot
  • javascript
  • codillity
  • Notification
  • 초보자
  • ad
  • Vue
  • 부트
  • Jetpack
  • node.js

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
뚜벅이!

Mobile :)

[Docker] boot를 Docker로 실행해보자
프로그래밍 공부/Etc

[Docker] boot를 Docker로 실행해보자

2019. 6. 27. 16:49
728x90

2019/06/27 - [프로그래밍 공부/Etc] - Rest API - Swagger 사용하기

 

Rest API - Swagger 사용하기

2019/06/20 - [프로그래밍 공부] - [Nuxt.js + Spring Boot] simple example [Nuxt.js + Spring Boot] simple example 스프링 부트 +lombok +jpa +h2 +web starter +rest repository lombok실행시켜서 sts에 설치..

ttubeoki.tistory.com

사용될 코드는 여기서 가져온 코드가 사용되므로 참고

 

 

 

 

 

 

 

 

Docker 는 기본(?)적으로 VM의 기능을 가지고 있기 때문에 ( 서버 )

컴퓨터가 가상화 기능을 사용할 수 있는지 우선 확인해봐야 한다.

 

물론 Docker는 VMware 처럼 기존 OS에 추가적으로 OS를 덧붙여 사용하는 방식이 아닌, Container로 들어가져 있기때문에 상당히 빠르고, 가볍게 사용이 가능하다.

 

Ctrl+alt+delete -> 작업관리자 -> 성능 의 오른쪽아래에 가상화를 지원하는지 확인이 가능하다.

 

 

 

 

 

 

지원을 한다면, 

https://www.docker.com/

 

Enterprise Container Platform | Docker

Build, Share, and Run Any App, Anywhere. Learn about the only enterprise-ready container platform to cost-effectively build and manage your application portfolio.

www.docker.com

Docker 홈페이지에 가입하고 window 용으로 다운

 

 

 

 

 

Docker사용

정상적으로 설치가 되었다면 Terminal이 생성되었을 것이다.

boot에 작업하기전에 terminal 을 실행시켜서 고래 이미지 한번 보고 가자

Docker사용

여기에서 나오는 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로 되어있기때문에

(얼마든지 바꾸어도 상관없음)

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 에서 프로젝트 경로로 이동해준후,

 

Docker사용

./mvnw clean package docker:build 를 입력해준다

( gradle 환경이라면, ./gradle clean docker )

 

Docker사용

촤르르륵 떳다가 build success가 초록색으로 보일텐데,

그때 docker images 를 입력해보면 제대로 빌드됐는지 확인할 수 있다

Docker사용

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 를 입력했을때 무엇인가 뜬다면 제대로 실행되고 있다는 뜻이다.

 

Docker사용

현재 실행되고 있는 이미지

 

 

 

로그로도 확인을 해보면,

--name을 testDocker 로해놓았기때문에 ( 네임설정을 안했을 시에는 containerID로 조회하면된다)

$docker logs testDocker

 

Docker사용

이런식으로 백단이 실행중이라는 로그를 띄워주게 된다

 

 

 

 

 

 

그럼 아까전 default ip로 주어진 192.168.99.100:8080으로 접속하게 되면,

Docker사용

이렇게 접속에 성공한다.

(맨위에 링크걸어둔 프로젝트에서는 nuxt.js 가 프론트이기때문에 백단인 8080에 접속하면 json 형식의 데이터만 보여진다)

 

 

 

데이터도 확인을 해보아야 하기때문에 전 포스팅에서 설정해두었던 swagger로 접속해보자. 

Docker사용

post -> hello world

get - > 화면에서 보여지는 것을 보니 잘 입력이 된다.

728x90
저작자표시 (새창열림)

'프로그래밍 공부 > 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
    '프로그래밍 공부/Etc' 카테고리의 다른 글
    • audio tag에서 seekbar가 작동하지 않을때
    • java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    • [메모] activity launchMode 삽질
    • Rest API - Swagger 사용하기
    뚜벅이!
    뚜벅이!
    2022. 4년차 안드로이드 개발자 wndnjs19@gmail.com

    티스토리툴바