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의 경로를 지정한다.
- context
- ports
호스트와 컨테이너 간의 포트를 매핑한다.
호스트 4030포트를 3000번 컨테이너 포트로 매핑하여 사용하도록 작성했다. - restart
컨테이너가 종료될때 다시 시작하도록 설정할 수 있다.
always를 작성하면 항상 다시 시작하도록 설정한다. - environment
컨테이너 내부에서 사용할 환경변수를 설정할 수 있다. - volumes
호스트와 컨테이너 간의 볼륨을 매핑할 수 있다.
호스트의 recource 디렉토리를 컨테이너 /resource디렉토리로 매핑하고
node_modules, .next폴더도 각각 매핑해준다. - stdin_open
컨테이너의 표준 입력을 열도록 설정한다.
개발중인 앱을 컨테이너에서 실행하고 로그확인, 명령입력에 유용하다. - tty
컨테이너와 상호작용하기 위해 터미널 모드로 사용하도록 설정해
디버깅목적으로 주로 사용한다.
- container_name
- front
각각 사용하는 이유와 사용방법만 간단하게 숙지하고 본인의 프로젝트 경로를 알고있다면
금방 작성이 가능하다.
작성이 끝났다면 /local에 터미널을 위치시키고 다음 명령어를 작성해보자.
명령어
docker-compose up -d
그럼 빌드가 실행되며 dockerfile과 docker-compose파일을 읽어 컨테이너에 올리고 실행한다.
결과물
이렇게 성공했다면 러닝이 뜨고 우측에 맵핑한 포트(4030:3000)를 클릭하면 바로 웹에 접속이 가능하다.
혹시라도 러닝이 아니라 자꾸 흑색으로 꺼진다거나 재실행되는 상황이라면 local을 클릭해 로그를 확인하고
compose파일이나 docker파일을 다시 확인하고 수정할 필요가 있다.
반응형