
Docker
Docker는 '데이터 또는 프로그램을 격리시키는 기능'을 제공하는 소프트웨어이다. Docker image를 사용하여 container를 생성할 수 있다. Git을 활용해 code를 관리하는 것처럼 Docker를 활용하면 개발환경을 관리할 수 있다. 이러한 아름다운 기능을 사용하면 협업을 진행할 때, 개발환경을 쉽게 통일할 수 있고, 배포도 복잡한 실행 없이 진행 할 수 있을 것이다.
VSCode에서는 Remote-Container에 attach 하여 쉽게 container 기반으로 코드를 실행할 수 있지만 IntelliJ에서는 그런 기능을 찾지 못했다. IntelliJ에서 VSCode와 유사하게 Docker을 활용하기 위해 삽질한 과정을 기록하고자 한다.
FROM python:3.10
RUN mkdir /opt/code
RUN pip install --upgrade pip
WORKDIR /opt/code
COPY requirements.txt .
RUN pip install -r requirements.txt
EXPOSE 8080
한 줄씩 살펴보자.
FROM은 특정한 image를 기반으로 새로운 image를 생성하여 build 하겠다는 의미이다.
RUN은 dockerfile로부터 docker image를 build할 때 실행되는 명령어이다.
WORKDIR은 cd와 유사하게 작업 디렉터리를 변경한다.
COPY는 dockerfile을 build 하는 경로에서 docker image로 파일을 복사한다.
EXPOSE는 컨테이너가 open 할 내부 port 번호를 의미한다.
CMD는 위 스크립트에서 사용하지는 않았지만 컨테이너를 실행할 때 실행할 명령어이다.
위에서 작성한 dockerfile을 build 할 시간이다.
docker build -t {name:tag} .
현재 경로(.)에 위치한 Dockerfile을 활용하여 image를 build 한다. -t 옵션을 사용할 때 tag는 필수로 적어줄 필요는 없다.
이제 Docker image를 실행하여 Container를 만들자.
docker run
-it
-v {host_path}:{container_path}
-p {host_port}:{container_port}
--name {container_name} {image_name} /bin/bash
-v는 host와 container 사이의 동기화 할 폴더를 지정하기 위해 사용하는 옵션이다.
-p는 host와 container의 port를 mapping 하는 옵션이다.
-name은 container의 이름을 설정하는 옵션이다.
-it는 컨테이너를 종료하지 않고 계속 실행하기 위한 옵션이다.
Docker 컨테이너 내에 존재하는 파이썬 인터프리터를 host의 인터프리터로 사용하려면 추가적인 설정이 필요하다.
Docker가 설치되어있는지 확인
Python 플러그인이 설치되어있는지 확인
File | Project Structure Ctrl+Alt+Shift+S

Project Structure의 Platform Settings에서 SDKs를 선택하고 + 를 클릭하면 팝업 메뉴창이 뜰텐데, Add Python SDK를 선택한다.

Add Python Interpreter이 뜨게 될텐데 Docker을 선택하고 인터프리터로 사용할 Image와 해당 이미지 내의 파이썬 경로를 선택하면 이미지 내의 인터프리터를 사용할 수 있다.

