[SW 직무역량 부트캠프] 4일차 06-29

WJ·2023년 6월 29일
post-thumbnail

2023-06-29 SW 직무역량 부트캠프 4일차 TIL

📙 이론

  • 싱글톤
    • 객체의 인스턴스를 하나만 생성하여 사용하는 패턴
    • 메모리 낭비 방지 및 데이터 공유의 용이성
    • @Configuration, 스프링 빈은 싱글톤 스코프로 생성 (빈은 스코프 변경 가능)
  • HTTP의 4가지 메소드
    • DispatcherServlet을 통해 컨트롤러에 매핑
    • GET -> Create
    • POST -> Read
    • PUT -> Update
    • DELETE -> Delete
  • Docker

📙 실습

  • CRUD 매핑만 진행한 RestController 구현
@RestController
@RequestMapping("/api/latest") // api 주소 매핑
public class TestController {
      // Create
      @PostMapping("/test")
      public ResponseEntity<String> create(@RequestBody Map<String, String> map) {
          // val1
          // val2
          System.out.println("map.val1 = " + map.get("val1"));
          System.out.println("map.val2 = " + map.get("val2"));
          return ResponseEntity.ok("CREATED");
      }

      // Read 
      @GetMapping("/test/{id}")
      public ResponseEntity<String> read(@PathVariable Long id) {
          System.out.println("id = " + id);

          return ResponseEntity.ok("Hello World KNU");
      }

      // Update
      @PutMapping("/test/{id}")
      public ResponseEntity<String> update(@PathVariable Long id, @RequestBody Map<String, String> map) {
          System.out.println("id = " + id);
          System.out.println("map.val1 = " + map.get("val1"));
          System.out.println("map.val2 = " + map.get("val2"));

          return ResponseEntity.ok("UPDATED");
      }

      // Delete
      @DeleteMapping("/test/{id}")
      public ResponseEntity<String> delete(@PathVariable Long id) {
          System.out.println("id = " + id);
          return ResponseEntity.ok("DELETED");
      }
  • Docker를 이용한 스프링 프로젝트 배포
  1. 스프링 프로젝트 빌드 - Gradle bootJar 를 통해 jar 파일 생성
  1. 최상단 디렉토리에 아래와 같은 내용으로 Dockerfile 생성
# base-image
FROM openjdk:11
# COPY에서 사용될 경로 변수
ARG JAR_FILE=build/libs/*.jar
# JAR 빌드 파일을 도커 컨테이너로 복사
COPY ${JAR_FILE} app.jar
# JAR 파일 실행
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 아래 명령어로 빌드하여 도커 이미지 생성, 명령어 끝에 . 에 주의할 것
$ docker build -t <이미지 이름:태그> . 

  1. docker images, docker run 명령어를 통해 생성된 이미지 확인 및 컨테이너 생성

$ docker run <이미지 이름:태그>

  1. dockerhub에 이미지 푸시를 위해 아래 명령어를 이용해 이미지 네이밍 변경
$ docker tag <이미지 이름>:<태그> <dockerhub 사용자 이름>/< 이미지 이름>:< 태그>
// 
  1. 도커허브에 푸시
$ docker push <dockerhub 사용자 이름>/< 이미지 이름>:< 태그>


정상적으로 푸시 되었고, pull 명령어를 사용하여 이미지를 가져오면 된다.

profile
주니어 개발자

2개의 댓글

comment-user-thumbnail
2023년 6월 30일

도커 사용법을 깔끔하게 작성하셨네요 ㅎㅎ
도움이 되었습니다

1개의 답글