dev container

1. install docker

install docker

2. install vscode

install vscode

3. install vscode extension

Alt text

install dev container extension

4. create dev container

ํ˜„์žฌ ๋กœ์ปฌ์— python์€ ์„ค์น˜๊ฐ€ ์•ˆ๋˜์ž‡๊ณ  vs code python๊ด€๋ จ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์„ค์น˜๊ฐ€ ์•ˆ๋˜์žˆ๋‹ค.

Alt text

no python extension

Alt text

python ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด๊ณ  ์‹คํ–‰์„ ๋ˆŒ๋Ÿฌ๋ณด์ž.

Alt text

์—๋Ÿฌ ๋‚œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  python์„ ์„ค์น˜ํ•˜๋ผ๊ณ  ํ•œ๋‹ค.

Alt text

์šฐ๋ฆฌ๋Š” ๋กœ์ปฌ ํ™˜๊ฒฝ์„ ๊ฑด๋“œ๋ฆฌ์ง€์•Š๊ณ  ๋ชจ๋“ ๊ฑธ ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด์•„์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค.

๊ทธ๋ž˜์„œ dev container๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

setup dev container

cmd + shift + p

add dev container

Alt text
Alt text

ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์„ ํƒํ•˜์ž ๋‚œ python

Alt text

3.10 bullseye

Alt text

์ถ”๊ฐ€ ๊ธฐ๋Šฅ (์ผ๋‹จ ํŒจ์Šค)

Alt text
Alt text

๋‹ค์‹œ vscode ์—ด๊ธฐ

๋กœ๊ทธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋กœ๊ทธ๋ฅผ ๋ณผ์ˆ˜์žˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ํ•œ๊ฑธ ์ •๋ฆฌํ•˜๋ฉด ๋ณ„๊ฑฐ ์—†๋‹ค. ์ •๋ฆฌํ•˜๋ฉด

  1. .devcontainer ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ 

  2. ๊ทธ์•ˆ์— devcontainer.json์„ ๋งŒ๋“ค๊ณ 

  3. ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

dev container ์‹คํ–‰

๋‹ค์‹œ ๋กœ๋”ฉ์„ ํ•˜๋ฉด docker image๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฐ๋‹ค.

์ผ๋‹จ ๊ธฐ๋ณธ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋‹ค์‹œ ๋กœ๋”ฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ธ๋‹ค.

Alt text

plugin์„ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ 2๊ฐœ์˜ ์ฐฝ์ด ๋ณด์ด๋ฉฐ ๊ฐ๊ฐ ์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ‘œ์‹œ๋œ๋‹ค.

Alt text

์—ฌ๊ธฐ์„œ ์ž ๊น ์™œ ์ปจํ…Œ์ด๋„ˆ์— ๋งŽ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜์—ˆ๋Š”๊ฐ€?

ms์—์„œ ๊ธฐ๋ณธ ์ œ๊ณตํ•œ python container๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์•„๋งˆ ๋‹ค์Œ๊ธ€์— ์ž์„ธํ•œ ์„ค๋ช… ์˜ˆ์ • //todo

python code ์‹คํ–‰

๋‹ค ๋ฌ๋‹ค ์ด์ œ ํŒŒ์ผ์„ ์‹คํ–‰ํ•ด ๋ณด์ž.

Alt text

์‹คํ–‰ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณด์ž.

Alt text

์ผ๋‹จ ์‚ฌ์šฉ์•ˆํ•จ์œผ๋กœ ํ•˜์ž.

์‹คํ–‰ํ•˜์ž. ์—๋Ÿฌ..

Alt text

์‹คํ–‰์€ ๋˜์—ˆ์œผ๋‚˜ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์ด ์„ค์น˜๊ฐ€ ์•ˆ๋˜์ž‡๋Š”๋“ฏ ์‹ถ๋‹ค.

์„ค์น˜ํ•˜์ž.

Alt text

๋‹ค์‹œ ์‹คํ–‰ํ•˜์ž.

Alt text

๋™์ž‘ํ•œ๋‹ค.

repoen project

ํ”„๋กœ์ ํŠธ๋ฅผ vscode๋กœ ์—ฐ๋‹ค.

cmd + shift + p > Dev Containers: Reopen in Container

๋นŒ๋“œํ•˜๋ฉด์„œ ์˜คํ”ˆํ•œ๋‹ค.

์‹ฌํ™”๊ณผ์ •

https://containers.dev/

์—ฌ๊ธฐ์„œ ๋‹ค์–‘ํ•œ ์„ค์ •์„ ๋ณผ์ˆ˜์žˆ๋‹ค.

https://containers.dev/implementors/spec/

์—ฌ๊ธฐ๋„ ๋„์›€์ด ๋œ๋‹ค.

devcontainer.json ํŒŒ์ผ์„ ์ˆ˜์ •

name์„ ์ˆ˜์ •ํ• ์ˆ˜ ์žˆ๋‹ค.

docker image๋„ ๋„ฃ์„์ˆ˜ ์žˆ๋‹ค.

์•ž์—์„œ๋Š” ์ˆ˜๋™์œผ๋กœ package๋ฅผ ์„ค์น˜ํ•ด์•ผํ–‡๋Š”๋ฐ ์œ„ ์ปค๋งจ๋“œ๋ฅผ ๋„ฃ์œผ๋ฉด ๋นŒ๋“œํ•˜๋ฉด์„œ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ด์ค€๋‹ค.

jsonํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์Œ ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.

Alt text

๋‹ค์‹œ ๋นŒ๋“œํ•˜์ž.

ํ˜น์‹œ ์ฐฝ์ด ์‚ฌ๋ผ์ง€๋ฉด ์•„๋ž˜์ชฝ์— ์ข…๋ชจ์–‘์„ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ๋ณด์ธ๋‹ค.

์•„๋‹ˆ๋ฉด ๋‹ค์‹œ ์—ด๋ฉด ๋œ๋‹ค.(์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‹ค์‹œ ์—ด๊ธฐ)

Alt text

์ž๋™์œผ๋กœ ์„ค์น˜ํ•œ๋‹ค.

๋งŽ์€ ์˜ต์…˜์ด ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ์„ ํ™•์ธํ•œ๋‹ค.

https://containers.dev/implementors/json_reference/

forwardPorts ๋ฅผ ํ•ด๋ณด์ž.

ํฌํŠธ๊ฐ€ ์˜คํ”ˆ๋œ๋‹ค.

Alt text

extension

๊ทธ๋Ÿฐ๋ฐ ์•„๋ž˜ ์ต์Šคํ…์…˜์€ ์™œ ์„ค์น˜๊ฐ€ ๋œ๊ฑธ๊ฐ€์š”? Alt text

๋‚ด๊ฐ€ ์„ค์น˜ํ•˜๋ผ๊ณ  ํ•˜์ง€ ์•Š์•˜๊ณ  ์„ค์น˜๋˜์–ด์žˆ๋Š”๊ฑธ๋กœ ๋ณด์•„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

docker image์— ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋‹ค.

ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์ž‡๋Š” docker image์—๋Š” ์ž์ฒด์ ์ธ devcontainer.json ์ด ์žˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  devcontainer.json์€ ์œ„ ํŒŒ์ผ์— ์ถ”๊ฐ€๊ฐ€ ๋˜๋Š” ํ˜•์‹์ด๋‹ค.

https://github.com/microsoft/vscode-dev-containers/blob/main/.devcontainer/devcontainer.json

์—ฌ๊ธฐ์—์„œ ๊ธฐ๋ณธํŒŒ์ผ๋“ค์„ ๋ณผ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  python3์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ ๊ฒฝ๋กœ์— ์žˆ๋‹ค.

https://github.com/microsoft/vscode-dev-containers/blob/main/containers/python-3/.devcontainer/devcontainer.json

Alt text

์ด๊ฒƒ๋“ค์„ ์„ค์น˜ํ•˜๊ณ  ์žˆ๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” extension์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ํ•˜์ž.

indent-rainbow๋ฅผ ์„ค์น˜ํ•˜์ž.

Alt text

์‹๋ณ„์ž๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค.

Alt text

์„ค์น˜๊ฐ€ ๋œ๋‹ค.

์ข€๋” ์‹ฌํ™” ๊ณผ์ •

์ด์ œ ๋‚˜๋งŒ์˜ ๋„์ปค๋กœ ์‚ฌ์šฉํ•ด๋ณผ๊ฐ€?

Dockerfile์„ ๋งŒ๋“ค์ž.

์ด์ œ devcontainer.json์„ ์ˆ˜์ •ํ•˜์ž.

๋‹ค์‹œ ๋นŒ๋“œํ•˜์ž.

๋™์ž‘ํ• ๊ฒƒ์ด๋‹ค.

docker-compose.yml๋„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค.

todo

๋ฐ”๋น ์„œ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€..๊ทธ๋Ÿฐ๋ฐ ์บ์‹œ๋Š” ์–ด๋ฏ๊ฒŒ?

  • cache

  • remote ์„œ๋ฒ„์— ์ž‡๋Š” docker

  • cli

Last updated

Was this helpful?