11 KiB
title, source_type, url, archive_url, status, confidence, tags, related_projects, related_branches, created, last_reviewed
| title | source_type | url | archive_url | status | confidence | tags | related_projects | related_branches | created | last_reviewed | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Devcontainer spec — Spring Boot / Java 적용 | official-doc | https://containers.dev/implementors/spec/ | raw | high |
|
|
|
2026-05-25 | 2026-05-27 |
Devcontainer spec — Spring Boot / Java 적용
Layer:
raw/official-docs/— Devcontainer 공식 spec + 관련 공식 문서 발췌. ca-tmpl 의 "bootstrap =./gradlew bootstrap5단계 + OS 매트릭스" 결정의 대안 (devcontainer default 채택) 을 평가하기 위한 1차 근거.
Parent / 활용 branch (필수)
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-developer-experience-contract | bootstrap 5단계 + OS 매트릭스 채택 — devcontainer 가 보장하는 것 (tool/runtime stack) 과 보장하지 않는 것 (단일 진입점 / smoke test / Flyway 순서) 의 분리 근거 |
| raw/branch-notes/feature-build-release-supply-chain-contract | JDK version pin 이 devcontainer image 와 supply chain reproducibility 사이에서 공유되는 위치 명시 |
| raw/branch-notes/feature-skeleton-package-blueprint-contract | Spring Initializr archetype 위에 ca-tmpl operational contract 가 얹히는 layering 위치 |
추가 foundational 인용:
- raw/project-notes/ca-skeleton-operational-contract — DX 계약에서 "IDE별 개인 설정 out-of-scope" 가 devcontainer 의 보장 범위와 별도임을 명시하기 위한 근거
컨텍스트
feature-developer-experience-contract 결정 "bootstrap = ./gradlew bootstrap 5단계 + OS 매트릭스 (Linux/macOS/WSL2)" 의 대안 평가를 위해 devcontainer 정의가 무엇을 보장하고 무엇을 보장하지 않는지 raw 로 확보. ca-tmpl 이 devcontainer 를 default 로 두지 않은 이유 ("IDE별 개인 설정" out-of-scope) 에 대한 근거 자료.
출처 / Source
- 원본 URL (primary): https://containers.dev/implementors/spec/
- 보조 URL:
- devcontainers/images (Java) — https://github.com/devcontainers/images/tree/main/src/java
- VS Code Dev Containers extension — https://code.visualstudio.com/docs/devcontainers/containers
- GitHub Codespaces overview — https://docs.github.com/en/codespaces/overview
- Spring Initializr — https://start.spring.io / docs https://docs.spring.io/initializr/docs/current/reference/html/
- 아카이브 URL: (미수집)
- 저자 / 조직: Microsoft / GitHub / containers.dev WG, Spring team
- 발행일: 공식 문서 (지속 갱신)
- 마지막 확인일: 2026-05-27
핵심 인용 / Key quotes (verbatim)
[§Development Container Specification (containers.dev)] "A development container is a container in which a user can develop an application."
[§Development Container Specification (containers.dev)] "The purpose of the Development Container Specification is to provide a way to enrich containers with the content and metadata necessary to enable development inside them."
[§
devcontainer.json(containers.dev)] "Products using it should expect to find a devcontainer.json file in one or more of the following locations:.devcontainer/devcontainer.json,.devcontainer.json, or.devcontainer/<folder>/devcontainer.json."
[§Metadata (containers.dev)] "A development container defines an environment in which you develop your application before you are ready to deploy."
[§Orchestration options (containers.dev)] "This specification leaves space for further development and implementation of other orchestrator mechanisms and file formats."
[§Developing inside a Container — VS Code docs] "The Visual Studio Code Dev Containers extension lets you use a container as a full-featured development environment."
[§Create a devcontainer.json file — VS Code docs] "A devcontainer.json file in your project tells VS Code how to access (or create) a development container with a well-defined tool and runtime stack."
[§Create a devcontainer.json file — VS Code docs] "The dev container configuration is either located under
.devcontainer/devcontainer.jsonor stored as a.devcontainer.jsonfile (note the dot-prefix) in the root of your project."
Claims Extracted / 추출된 주장
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| DX-DC-C1 | Development container 는 user 가 application 을 개발할 수 있는 container | [§Development Container Specification] "A development container is a container in which a user can develop an application." | official-standard |
dev container 일반 정의 | application runtime container (production) 와 같다는 뜻 아님 — development 전용 |
| DX-DC-C2 | Development Container Specification 의 목적은 development 를 가능케 하는 content / metadata 로 container 를 enrich 하는 방법 제공 | [§Development Container Specification] "The purpose of the Development Container Specification is to provide a way to enrich containers with the content and metadata necessary to enable development inside them." | official-standard |
dev container 채택 환경 | spec 이 build/release pipeline 까지 cover 한다는 뜻 아님 — development phase 한정 |
| DX-DC-C3 | devcontainer.json 파일은 다음 위치 중 하나에서 발견됨: .devcontainer/devcontainer.json, .devcontainer.json, .devcontainer/<folder>/devcontainer.json |
[§devcontainer.json] "Products using it should expect to find a devcontainer.json file in one or more of the following locations: .devcontainer/devcontainer.json, .devcontainer.json, or .devcontainer/<folder>/devcontainer.json." |
official-standard |
devcontainer 채택 프로젝트 layout | 위 위치들이 동시에 존재할 때의 priority 는 본 인용 범위 밖 |
| DX-DC-C4 | VS Code Dev Containers extension 은 container 를 full-featured development environment 로 사용 가능케 함 | [§Developing inside a Container — VS Code docs] "The Visual Studio Code Dev Containers extension lets you use a container as a full-featured development environment." | official-vendor-doc |
VS Code 사용 환경 | IntelliJ / Eclipse 등 다른 IDE 에서도 같은 보장이 있다는 뜻 아님 — VS Code 한정 |
| DX-DC-C5 | devcontainer.json 은 VS Code 에 well-defined tool / runtime stack 을 가진 development container 에 접근/생성하는 방법을 알려줌 | [§Create a devcontainer.json file — VS Code docs] "A devcontainer.json file in your project tells VS Code how to access (or create) a development container with a well-defined tool and runtime stack." | official-vendor-doc |
VS Code Dev Containers 통합 | "tool / runtime stack" 이 build 시스템 / DB migration / smoke test 까지 자동 정의된다는 뜻 아님 — image 와 metadata 만 |
| DX-DC-C6 | spec 은 추가 orchestrator mechanism / file format 의 development / implementation 여지를 남겨둠 (현재 spec 이 모든 orchestrator 를 cover 하지 않음) | [§Orchestration options] "This specification leaves space for further development and implementation of other orchestrator mechanisms and file formats." | official-standard |
spec 의 현재 scope 한계 | 현재 spec 이 충분히 production-ready 가 아니라는 뜻 아님 — extensibility 명시 |
Usage Boundaries / 적용 경계
- 이 자료가 직접 증명하는 것:
DX-DC-C1~C3: devcontainer spec 의 정의, 목적, 파일 위치DX-DC-C4~C5: VS Code 통합 방식과 "tool / runtime stack" 정의 범위DX-DC-C6: spec 의 orchestration extensibility 의도
- 이 자료가 증명하지 않는 것:
- devcontainer 가 ca-tmpl 의 "bootstrap 5단계" 를 대체할 수 있다는 주장 (spec 은 image 정의 + metadata 만 — 단일 진입점 / smoke test / Flyway migrate 순서는 별도)
- GitHub Codespaces 와 VS Code Dev Containers extension 이 같은 devcontainer.json 으로 100% 호환된다는 사실 (Codespaces 공식 페이지 별도 fetch 필요 — 본 fetch 에는 Codespaces 인용 미포함)
- Spring Initializr 가 devcontainer 또는 CI 설정을 생성하지 않는다는 사실 (Spring Initializr 공식 fetch 가 본 차수에 없음 —
needs-confirmation) - Java/JDK image (devcontainers/images Java) 가 LTS 버전을 default 로 보장한다는 사실 (별도 fetch 필요)
- IntelliJ 사용자에게 devcontainer 가 동등한 통합 경험을 준다는 사실
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
- ca-tmpl 의
./gradlew bootstrap5단계가 devcontainer 내부에서도 별도로 정의되어야 하는 항목 목록 - devcontainer features (e.g.,
ghcr.io/devcontainers/features/java) 가 ca-tmpl 의 JDK pin 정책과 충돌하지 않는지 - Codespaces 사용 시 devcontainer.json + ca-tmpl bootstrap script 가 양립하는지의 실제 시연
- ca-tmpl 의
메모 / Notes (내 프로젝트 해석)
본 섹션은 자료 직접 인용 아님. ca-tmpl 결정 컨텍스트 해석.
- Devcontainer 가 해결하는 것 (
DX-DC-C1,DX-DC-C2,DX-DC-C5기반): tool version (JDK/Gradle), OS-level deps (libxml, locale), VSCode/Codespaces 통일. - Devcontainer 가 해결하지 않는 것 (spec scope 한계,
DX-DC-C2의 "development phase 한정"): 첫./gradlew bootstrap단일 진입점, smoke test 정의, Flyway migrate 순서. 즉 ca-tmpl 의 5단계 bootstrap 은 devcontainer 안에서도 별도로 정의되어야 함. - 트레이드오프: devcontainer 를 강제하면 Codespaces/VSCode 사용자에게 마찰이 줄지만, IntelliJ + 로컬 JDK 사용자에게는 중복 환경이 됨 (
DX-DC-C4는 VS Code 한정). ca-tmpl 의 "IDE별 개인 설정 out-of-scope" 는 이 트레이드오프를 회피하는 명시적 선택. - Spring Initializr 는 archetype 시작점일 뿐, ca-tmpl 이 정의하는 operational contract (CI gate, supply chain, DX) 와는 분리됨 (단 본 fetch 에는 Spring Initializr 인용 미확보). raw 로 명시해 wiki/concepts 변환 시 "Initializr 가 충분하다" 는 오해 차단.
Related / 관련
- 같은 주제 다른 official-doc:
- raw/official-docs/dx-mise-asdf-tool-versioning — JDK / tool version 핀 (devcontainer image 와 분리된 layer)
- 인용하는 branch:
- raw/branch-notes/feature-developer-experience-contract — bootstrap 5단계 + OS 매트릭스 + JDK 핀
- raw/branch-notes/feature-build-release-supply-chain-contract — JDK version pin via reproducibility
- raw/branch-notes/feature-skeleton-package-blueprint-contract — Spring Initializr archetype layering
- canonical contract 섹션:
- 인용하는 wiki: (미작성)