1.Docker-compse.yml에 대해서
Docker Compose는 여러 개의 Docker 컨테이너를 하나의 그룹으로 묶어서 쉽게 관리할 수 있게 도와주는 도구
Docker Compose를 사용하면 이러한 컨테이너들을 쉽게 설정하고 한 번에 여러 개를 실행하거나 중지할 수 있습니다.
2.Docker-compose의 명령어
docker-compose up -d
- Docker run 커맨드와 비슷하다
- Docker-compose.yml에 정의된 내용대로 도커허브에서 이미지를 내려받고 빌드한후 커스텀 이미지를 생성후 해당 이미지로 컨테이너를 생성한다
- 마지막의 -d는 백그라운드에서 실행한다는 의미
docker-compose stop
- 컨테이너 정지
docker-compose down
- 컨테이너 정지 및 컨테이너 삭제
- 그러나 볼륨과 이미지는 삭제하지않음 (만약 Dockerfile등을 수정할 경우, 이미지를 다시 빌드할필요가 있다. 그러므로 수동으로 이미지를 삭제해야함 )
3.Docker-compose.yml과 DockerFile의 실제 예제
Docker-compose.yml
version: "3.9"
services:
nuxt: # 서비스명
container_name: nuxt # 컨테이너명
volumes:
- ./front:/front # 로컬파일 : 컨테이너파일 파일을 1:1로 맵핑
- ./front/node_modules:/front/node_modules
build: docker/nuxt # Docker 이미지를 만들기 위한 Dockerfile이 위치한 경로
working_dir: /front # 컨테이너 내에서 작업 디렉토리를 "/front"로 설정합니다.
ports:
- "3000:3000" # 호스트 머신의 포트 3000을 컨테이너의 포트 3000에 매핑
- "24678:24678" # Nuxt 핫리로드를 위한 포트
tty: true # 컨테이너와 상호작용할때 터미널(tty)를 사용합니다
environment:
- HOST=0.0.0.0
- port=3000
- API_URL=http://host.docker.internal:8000/api/ # host.docker.internal는 Docker내부의 로컬호스트(localhost)를 나타냄
command: sh -c "npm install -g pnpm && pnpm install && pnpm dev" # docker-compose up -d 등으로 시작할때마다 입력되는 명령어
volumes: nuxt_node_modules:
DockerFile
FROM node:18-slim # 도커허브에 검색하면 debian linux를 사용하는 이미지파일이다.
ENV TZ Asia/Tokyo
WORKDIR /front
RUN apt update \
&& apt install -y
# Git설치에 필요한 라이브러리 다운
# 명령어 사용 RUN
RUN apt-get install -y gettext \
libcurl4-gnutls-dev \
libexpat1-dev \
libghc-zlib-dev \
libssl-dev \
make \
wget
# Git의 소스파일을 컴파일하고 인스톨함
RUN wget https://github.com/git/git/archive/v2.30.0.tar.gz \
&& tar -xzf v2.30.0.tar.gz \
&& cd git-* \
&& make prefix=/usr/local all \
&& make prefix=/usr/local instal
4.도커에서 이미지 빌드란?
베이스 이미지(우분투) 등으로 커스텀이미지 (우분투에 NodeJS를 설치한 이미지)로 변환하는등의 행위
( 위의 예제에서 docker-compose에서 DockerFile의 정의된 베이스 이미지로부터 커스텀 이미지로 빌드함 )
5.Docker의 컨테이너의 환경을 VScode로 실행하기
Dev Containers라는 익스텐션을 사용한다
참고
Nov 6, 2023
Views 258