Develop/CICD

Docker_2탄 docker-compose Example with Next.js 도커컴

3.dev 2023. 9. 1. 16:17
반응형

이번에는 도커 컴포즈 파일을 작성해서

백그라운드에서 동작하며 실시간으로 수정한 파일을 확인 할 수 있도록 할것이다.

 

만약 도커파일 작성법을 모르거나 작성하지 않았다면 아래 docker 글을 확인하고 오자.

 

Docker_1탄 DockerFile Example with Next.js 도커파일 작성방법!

개발을 하다보면 운영체제에 따라서 오류가 발생하거나 실해이 안되는 경우가 발생할 수 있다. 그래서 가상의 PC환경을 셋팅하고 해당 환경에 작업중인 프로젝트를 이용해서 개발하는 도구를

3pdev.tistory.com

 

이미 Docker파일을 작성해봤거나 했다면 docker-compose는 의외로 간단하고 쉽다.

1탄에서 이미 생성해둔 local폴더에 docker-compose.yml파일을 생성하고 예시를 보며 작성해보자.

 

예시

version: "3"
services:
  front:
    container_name: "project"
    build:
      context: ../
      dockerfile: local/Dockerfile
    ports:
      - "4030:3000"
    restart: always
    environment:
      - TZ=Asia/Seoul
    volumes:
      - ../resource:/resource
      - /resource/node_modules
      - /resource/.next
    stdin_open: true
    tty: true
  • version
    • docker compose파일의 버전을 지정할 수 있다.
  • services
    • front
      서비스의 이름을 지정한다. front가 아닌 다른이름으로 지정하면 서비스명을 바꿀 수 있다.
      • container_name
        말그대로 컨테니어 이름을 설정하는 곳이다.
      • build
        컨테이너 빌드방법을 설정하는 방법을 지정한다.
        • context
          docker파일과 프로젝트파일이 있는 경로를 지정한다.
          이 경우 local과 resource 폴더가 상위안에 따로있기때문에 바로 상위의 경로로 지정한다.
        • dockerfile
          dockerfile의 경로를 지정한다.
      • ports
        호스트와 컨테이너 간의 포트를 매핑한다.
        호스트 4030포트를 3000번 컨테이너 포트로 매핑하여 사용하도록 작성했다.
      • restart
        컨테이너가 종료될때 다시 시작하도록 설정할 수 있다.
        always를 작성하면 항상 다시 시작하도록 설정한다.
      • environment
        컨테이너 내부에서 사용할 환경변수를 설정할 수 있다.
      • volumes
        호스트와 컨테이너 간의 볼륨을 매핑할 수 있다.
        호스트의 recource 디렉토리를 컨테이너 /resource디렉토리로 매핑하고
        node_modules, .next폴더도 각각 매핑해준다.
      • stdin_open
        컨테이너의 표준 입력을 열도록 설정한다.
        개발중인 앱을 컨테이너에서 실행하고 로그확인, 명령입력에 유용하다.
      • tty
        컨테이너와 상호작용하기 위해 터미널 모드로 사용하도록 설정해
        디버깅목적으로 주로 사용한다.

각각 사용하는 이유와 사용방법만 간단하게 숙지하고 본인의 프로젝트 경로를 알고있다면

금방 작성이 가능하다.

작성이 끝났다면 /local에 터미널을 위치시키고 다음 명령어를 작성해보자.

 

명령어

docker-compose up -d

그럼 빌드가 실행되며 dockerfile과 docker-compose파일을 읽어 컨테이너에 올리고 실행한다.

결과물

compose up 성공 예시

이렇게 성공했다면 러닝이 뜨고 우측에 맵핑한 포트(4030:3000)를 클릭하면 바로 웹에 접속이 가능하다.

혹시라도 러닝이 아니라 자꾸 흑색으로 꺼진다거나 재실행되는 상황이라면 local을 클릭해 로그를 확인하고

compose파일이나 docker파일을 다시 확인하고 수정할 필요가 있다.

반응형