Docker-compose에 대해서 (Nuxt Docker설정)

dockercompose

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라는 익스텐션을 사용한다



참고

https://devzzi.tistory.com/76

https://zenn.dev/koralle/articles/6595594da018dc

도커이미지

Nov 6, 2023 Views 258