package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SpringWithDockerApplication {
@GetMapping("/")
public String home() {
return "Hello, Docker!";
}
public static void main(String[] args) {
SpringApplication.run(SpringWithDockerApplication.class, args);
}
}
Dockerfile 생성
Docker는 이미지의 'layers'를 구성하기 위해서 Dockerfile 이라는 간단한 파일 형식을 사용한다. 우리가 만들 것은 Docker 이미지인데 이를 만들기 위한 설계도 역할을 하는 것이 Dockerfile이다. 여기서 layer란 이미지를 구성하는 각각의 층들을 의미한다. 예를 들어 운영체제 설치 --> Java 설치 --> 애플리케이션 복사와 같이 단계적으로 layer를 구성하게 된다.
레지스트리 주소: 이미지가 저장된 레지스트리를 지정하며 이를 통해 이미지를 어디서 다운로드 하고 업로드 할 지 결정한다. 생략하면 기본 주소로 docker.io를 사용한다.
프로젝트명: 이미지가 속한 프로젝트로 레지스트리에서 이미지를 관리하는 폴더와 같다. 일반적으로 도커 허브에서는 사용자의 계정명이 프로젝트 명으로 사용된다.
이미지명: 다운로드 할 이미지의 이름으로 일반적으로 애플리케이션 이름이다.
이미지태그: 이미지의 버전을 나타내며 숫자와 문자를 모두 포함할 수 있다.
예시로 몇 가지 이미지를 살펴보자.
devwiki.com/myproject/mynginx:2.1.0-alpine: 이 이름에는 모든 요소들이 포함되어있다.
devwikirepo/tencounter: 여기서는 레지스트리 주소와 이미지 태그가 생략되어있다. registry는 기본 값인 docker.io가 적용되며 이미지 태그는 latest가 적용된다. 따라서 이 경로는 docker.io/devwikirepo/tencounter:latest와 같다.
nginx: 이 경우는 이미지 명만 적용되어있는 경우이다. 이 이미지의 프로젝트 명은 library인데 docker에서는 검증된 이미지의 경우 공식 이미지를 제공하는데 이들의 프로젝트 명은 자동으로 library가 된다. 레지스트리주소와 이미지 태그는 위와 동일하다. 따라서 이 경로는 docker.io/library/nginx:latest로 ㅏ같다.