
도커를 배우면서 일단 우리 회사가 만들고자 하는 서비스를 정의해보자.
어떤 건물에 사람들이 방문할 때마다 이 칸에 이름을 적고 엔터를 치면 방문시간과 함께
표에 기록이 되는 웹페이지다!
이 웹 서비스는 프론트엔드, 백엔드, 데이터베이스로 구성할겁니당.
프론트엔드는 Svelte로 짜서 build한 결과물을 Node.js의 http-server에 올릴거에요.
쉽게 말하면 html, css, js를 브라우저에서 사이트로 볼 수 있도록 웹 서버를 돌릴겁니다.
백엔드는 파이썬 언어로 구현된 플라스크 프레임워크를 사용하고, 웹 API를 통해 데이터를 주고받는다.
이에 사용될 데이터들이 저장되는 데이터베이스에는 myslq!!
브라우저에서 프론트엔드 웹사이트를 열면 프론트엔드에서 백엔드로 데이터를 요청하고, 백엔드는 데이터베이스로부터 데이터를 받아서 프론트엔드에 보내줘서 화면에 나타내게 한다.
개발자는 로컬에서 코딩 및 테스트 후에 문제가 없으면 서버에 배포하여 서비스를 제공한다.
그러려면 개발자의 컴퓨터와 서버 모두에 이것들을 돌릴 수 있는 환경들이 가능한 버전들이 깔려 있어야 하잖아요.
근데 서비스A만 만드는거라면 상관이 없는데 새로운 서비스B를 만들게 됐는데 버전들이 다르다면 굉장히 번거롭겠죠!!

그럴 때는 보통 가상환경을 많이 생성하는데, 이건 그다지 효율적인 방식은 아니다.
왜냐면 컴퓨터 자원을 특정 비율로 분할해서 끌어가기 때문.
컴퓨터의 성능과 자원이 환경마다 칼같이 제한되어 버리는 문제 발생..
그렇다면 이보다 더 효율적으로 공간을 분리하는 방법은 없을까?
이럴 때 바로 도커의 컨테이너를 활용할 수 있다.
컨테이너는 도커에서 각 애플리케이션이 실행되는 공간을 의미한다.
이 공간은 필요한 파일과 설정을 모두 갖추고 있어서 다른 장소에서도 동일하게 작동함.
마치 이사 준비를 할 때 상자에 물건을 모아두는 것처럼 각 컨테이너는 필수적인 요소를 하나로 모으는 역할을 한다.

도커 사이트로 가서 Doker Desktop을 설치!

윈도우의 경우 버전에 따라 WSL2에 관련해서 등 추가 설정을 요구하는 팝업이 뜰텐데 그냥 거기 나오는 지시사항을 차근차근 따라하면 된다.
vscode랑 git도 준비해서 모두 갖춰지면 준비 완료

원하는 곳에 실습을 진행할 폴더 생성.
윈도우의 경우 사용자 폴더 안에 나의 사용자명으로 된 폴더 또는 그보다 안쪽에 폴더 생성

이 폴더를 vscode에서 열고 git clone 저 주소를 실행하면 된다.

패키지 구조를 살펴보면 frontend
노드는 가장 쉽게 사용할 수 있는 HTTP 서버 프로그램으로 웹 서버를 실행하여 웹사이트를 제공한다.
노드 JS는 브라우저가 아닌 터미널에서 자바스크립트를 실행할 수 있게 해준다.
컴퓨터에 노드 JS와 자바스크립트가 실행되는 HTTP 서버가 설치되어 있다면 터미널에서 명령어로 웹 서버를 실행할 수 있음
노드 JS가 설치되지 않았다면 HTTP 서버와 자바스크립트 코드가 실행되지 않음!!
도커 허브 사이트는 내가 뭔가 개발할 때 필요한 거의 모든 환경들을 '이미지'란 형태로 찾을 수 있다.
리눅스 컴퓨터의 특정 상태를 캡쳐해서 박제해놓은 것을 말한다.
도커는 일단 내 컴퓨터에서 그 이미지를 찾아본 뒤에 없으면 도커 허브로부터 해당 이름으로 등록된 이미지를 다운받게 된다.
run 명령어는 이미지가 없으면 다운을 받은 다음 그 이미지를 내 컴퓨터로 가져와서 컨테이너로 만든다.
이미지를 한 번 받으면 그걸로 컨테이너를 몇 개든 만들어낼 수 있다.
이미지는 컨테이너를 찍어내는 틀, 또는 무한생산 가능한 컨테이너 조립키트라고 생각해도 좋다!
run 명령어의 옵션으로 사용되는 -it는 이 컨테이너를 연 다음 그 환경 안에서 CLI를 사용한다는 것.
컨테이너를 만든 다음 그 안에 있느 근무자랑 컨테이너에 난 창문으로 대화를 하겠다는 거죵