반응형
해당 글은 Inflearn(인프런) ‘비전공자도 이해할 수 있는 Docker 입문/실전' 강의를 토대로 작성되었습니다.
1. Docker Compose를 사용하는 이유
Docker Copmose란?
여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다.
Docker Compose를 사용하는 이유
1. 여러 개의 컨테이너를 관리하는 데 용이
- 여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 한 번에 관리할 수 있게 해준다. 여러 컨테이너를 하나의 환경에서 실행하고 관리하는 데 도움이 된다.
2. 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음
- 이전에 MySQL 이미지를 컨테이너로 실행시킬 때 아래와 같은 명령어를 실행시켰다.
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
너무 복잡하지 않은가? Docker Compose를 사용하면 위와 같이 컨테이너를 실행시킬 때마다 복잡한 명령어를 입력하지 않아도 된다. 단순히 docker compose up 명령어만 실행시키면 된다.
2. 자주 사용하는 Docker Compose CLI 명령어
✅ compose 파일 작성
compose.yml
services:
websever:
container_name: webserver
image: nginx
ports:
- 80:80
✅ compose.yml에서 정의한 컨테이너 실행
docker compose up # 포그라운드에서 실행
docker compose up -d # 백그라운드에서 실행
✅ Docker Compose로 실행시킨 컨테이너 확인하기
# compose.yml에 정의된 컨테이너 중 실행 중인 컨테이너만 보여준다.
docker compose ps
# compose.yml에 정의된 모든 컨테이너를 보여준다.
docker compose ps -a
✅ Docker Compose 로그 확인하기
# compose.yml에 정의된 모든 컨테이너의 로그를 모아서 출력한다.
docker compose logs
✅ 컨테이너를 실행하기 전에 이미지 재빌드하기
docker compose up --build # 포그라운드에서 실행
docker compose up --build -d # 백그라운드에서 실행
- compose.yml에서 정의한 이미지 파일에서 코드가 변경 됐을 경우, 이미지를 다시 빌드해서 컨테이너를 실행시켜야 코드 변경된 부분이 적용된다. 그러므로 이럴 때에는 --build 옵션을 추가해서 사용해야 한다.
✅ 이미지 다운받기 / 업데이트하기
docker compose pull
- compose.yml에서 정의된 이미지를 다운 받거나 업데이트 한다.
- 로컬 환경에 이미지가 없다면 이미지를 다운 받는다.
- 로컬 환경에 이미 이미지가 있는데, Dockerhub의 이미지와 다른 이미지일 경우 이미지를 업데이트 한다.
✅ Docker Compose에서 이용한 컨테이너 종료하기
docker compose down
3. [실습] Docker Compose로 프론트엔드(Next.js) 실행시키기
✅ Docker Compose로 프론트엔드(Next.js) 실행시키기
1. Next.js 프로젝트 만들기
npx create-next-app@latest
2. Dockerfile 작성하기
FROM node:20-alpine
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
EXPOSE 3000
ENTRYPOINT [ "npm", "run", "start" ]
3. .dockerignore 작성하기
node_modules
이미지를 생성할 때 npm install을 통해 처음부터 깔끔하게 필요한 의존성만 설치한다. 따라서 호스트 컴퓨터에 있는 node_modules는 컨테이너로 복사해갈 필요가 없다.
4. compose 파일 작성하기
compose.yml
services:
my-web-server:
build: .
ports:
- 80:3000
5. compose 파일 실행시키기
docker compose up -d --build
6. compose 실행 현황 보기
docker compose ps
docker ps
7. localhost:80으로 들어가보기
8. compose로 실행된 컨테이너 삭제
docker compose down
✅ 참고) compose를 작성하지 않고 Docker CLI로 실행시킬 때
docker build -t my-web-server .
docker run -d -p 80:3000 my-web-server
반응형
'Docker' 카테고리의 다른 글
Docker : Dockerfile 활용해 이미지 직접 만들기 (1) | 2024.12.02 |
---|---|
Docker : 도커 볼륨을 활용해 데이터 유실 방지하기 (0) | 2024.12.02 |
Docker : [실습] Docker(Nginx 설치 및 실행) (0) | 2024.12.02 |
Docker : Docker CLI 익히기 (1) | 2024.12.02 |
Docker : Docker란? (0) | 2024.12.02 |