Docker 개발환경 세팅

n0wkim·2021년 8월 19일
3

Docker

목록 보기
1/2

이번 프로젝트를 진행하면서 처음 써본 Docker.
일단 처음 사용하기 위해서는 러닝 커브가 좀 있다고 느꼈다.
하지만 그럼에도 너무 편리했고, 나중에도 쓸 의향이 있다.

생활코딩 도커 강의가 나왔다...
다 끝나고 나니까 생코 강의가 나오네..

목차

  • 개발환경 세팅
  • Code Walkthrough
    • 파일 구조
    • Container와 Local 연결

개발환경 세팅


일단 기본적으로 환경을 정의한 이미지를 만들고, 그 이미지로 컨테이너(가상 환경)을 만들어서 그 안에서 개발하는 것을 목표로 한다. 또 그 이미지를 그대로 배포 환경에서 쓰면 된다.

Code Walkthrough

파일 구조

.
├── src
│   └── index.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt

각 파일들의 내용은 다음과 같다.

도커파일

도커파일은 이미지를 만들기 위한 설계도이다.

  • 지금은 requirements가 적으니까 걍 저기에 flask=1.1.2 라고 쓰고 run 해도 되는데, 길어지면 다 쓰기 어렵고 한 파일에서 관리하는게 편하니까 requirements를 나누어 준 모습.
  • 도커 이미지를 만들 때 /app 디렉토리랑 로컬의 /src랑 같아진다.(/app 안에 /src 에 있는 모든 파일을 넣으니까.)
  • 환경변수 지정.

Run에 대해 더 자세한 내용을 원한다면 참고.

docker-compose 파일

도커파일이 이미지를 어떻게 어떻게 만들어라~ 하는 설계도라면,
docker-compose 파일은 컨테이너에 대한 설계도이다.

  • services: 안에 몇 개의 컨테이너가 있게 될지 정의할 수 있다. 현재의 경우는 python-app 한 개.
  • flask의 default port는 5000이므로 5000:5000 마운트.
    src랑 app도 마운트. 아까 도커파일에서 src에 있는 전부를 app에 때려박은 걸 기억하고 있어야 어떤 의미인지 더 와닿을 것이다.
  • environment - development 모드로 실행.

requirements.txt 파일

나중에 버전관리 여기서 한 번에 할 수 있음.
프로젝트에서 사용한 패키지들의 관리를 여기에서 한 번에 할 수 있음.

플라스크 버전 몇을 설치하라는 의미.

로컬과 도커 컨테이너 차이점

왼쪽은 로컬에서의 모습이고, 오른쪽은 도커 컨테이너 안에서의 모습이다.
로컬에서는 밑줄이 불쾌하게 쳐져 있는데, 컨테이너에서는 그런 모습이 없다.

왜? 로컬에는 플라스크가 깔려있지 않다. 그래서 밑줄쳐서 뭐라고 하는거다.

로컬: 야 너 플라스크 안깔려있어서 이거 실행 못시킨다

하지만 우리는 도커 컨테이너 내부에서 돌릴거라서 상관이 없다.

Container와 Local 연결

우선 VS code extention 탭에서 remote-containers를 설치하자.

그리고 해당 소스코드가 있는 터미널에서
docker-compose up 혹은
docker-compose -f <해당 도커컴포스 파일 이름> up
을 입력해서 컨테이너 실행.

터미널에서도 잘 열렸다고 한다.

근데 아직 내가 보고 있는 화면은 컨테이너 상의 코드가 아니다. 로컬 코드다.
아까 설치한 extention을 이용해서 컨테이너 안으로 들어가 주자.

  1. command + shift + p로 검색창을 켠다.
  2. remote 입력 후 extention이 나오면 enter.
  3. 해당하는 container랑 마운트.
  4. 열기(아마 초기 위치가 root일 것이다.) →
    아까 우리는 src를 app에 던져놓았기 때문에 /app 선택.

이제 여기서 작업하면 된다.
컨테이너 안의 코드 에디터에서 작업할 때마다 바로 로컬에 코드가 반영되는 것을 볼 수 있다.

profile
끙끙대며 배우는 중

0개의 댓글