Linux, Window, Mac OS 등 운영체제가 다양하고 운영체제에 따라 사용하는 명령어, 기술, 정책 등 저마다 조금씩 다르다.
그렇기 때문에 팀 프로젝트를 하다보면 로컬 개발 환경이 달라 누구의 PC에서는 정상 동작하는데 누구의 PC에서는 동작하지 않은 경우가 발생할 수 있다. 게다가 새로 만든 서비스를 테스트 환경이나 배포를 할 때마다 온갖 이상한 오류가 나오기 십상이다.
Docker을 사용하면 동일한 개발 환경에서 작업이 가능하기 때문에 위의 상황들을 해결할 수 있다.
Docker Hub에서 공식적으로 Docker Official Image를 제공해주기 때문에 mysql, maria, mongo, redis 등 다양한 DB를 docker pull
명령어로 쉽게 설치하고 함께 사용할 수도 있다.
만약 개발한 서비스의 인기가 많아져 서버를 늘리기 위해 다른 서버로 이전하고 싶을 때 Docker을 사용하면 매번 새로운 환경을 구축하지 않고도 컨테이너만 복사하면 바로 해당 환경이 구축되기 때문에 편리하다.
이러한 장점 때문에 실무에서도 Docker가 많이 쓰이고 있어 한번 Docker에 대해 공부하고 로컬 환경에서 실습을 해보려 한다.
설치하는 과정은 간단하다.
https://docs.docker.com/desktop/install/windows-install/
위 링크에 들어가 Docker Desktop을 설치해주기만 하면 끝난다. 설치가 끝나면 CMD (혹은 Window Powershell)에 들어가 docker
명령어를 쳐서 설치가 잘 되었는지 확인해보자
⚠ 만약 Docker Desktop requires a newer WSL kernel version ERROR가 뜰 경우, Window Powershell을 관리자 권한으로 켠 후 wsl --update
실행하면 해결
처음 Docker을 실행할 경우 docker login
. Docker Hub 사이트에서 가입한 계정으로 로그인하면 된다.
https://junghyeonsu.tistory.com/42 참고
전체 폴더 구조
📦mbti-agora
┣ 📂back
┣ 📂front
┣ 📜.gitattributes
┣ 📜.gitignore
┣ 📜.prettierrc
┣ 📜package.json
┣ 📜README.md
┗ 📜yarn.lock
작업 폴더로 이동 cd mbti-agora
Root폴더에 Dockerfile파일과 .dockerignore 파일 생성
Dockerfile 예시
FROM node:18.14.0
WORKDIR /app
COPY . .
RUN yarn install
WORKDIR /app/back
RUN yarn install
WORKDIR /app/front
RUN yarn install
EXPOSE 5173
WORKDIR /app
CMD ["yarn", "dev"]
WORKDIR/app
- docker 컨테이너 안에 app이라는 작업 디렉토리 하나 생성한다.
- 컨테이너 app폴더가 로컬의 root폴더와 같은 역할이다.
- app폴더로 이동됨
Copy . .
RUN yarn install
WORKDIR/app/back
& WORKDIR/app/front
다시 WORKDIR /app
에 돌아가서 초기 실행이 yarn dev이므로 CMD ["yarn", "dev"]
※ CMD는 컨테이너가 실행된 후에 실행할 명령어
.dockerignore
.env
node_modules
등등..
작성한 Dockerfile을 바탕으로 Docker 이미지 생성 : docker build -t [생성할 이미지 이름] .
.
반드시 있어야 함. Dockerfile에서의 현재 위치를 의미docker images
로 이미지 정상 생성 되었나 확인
docker run -p 5173:5173 [이미지이름]
: Nginx 웹 서버 실행 (localhost:5173으로 접근)
docker ps
: 현재 실행 중인 컨테이너 알아보기docker build -t [생성할 이름] .
: 새 이미지 생성docker images
: 이미지 생성 및 목록 확인 docker run -p 호스트 포트(노트북 포트):컨테이너 포트 [이미지 이름]
: 호스트 포트에서 웹 브라우저를 사용하여 컨테이너 내의 Nginx 웹 서버에 접근docker run -d -p 호스트 포트(노트북 포트):컨테이너 포트 [이미지 이름]
: cmd창 닫아도 계속 Nginx 띄우기docker kill [이미지 이름]
: 컨테이너 (Nginx 서버 종료)docker container ls -a
: 컨테이너 목록 조회docker container rm [컨테이너ID]
: 컨테이너 제거docker rmi [이미지 이름]
: 이미지 제거