SW/Kubernetes, Docker

Docker Compose로 개발 환경 자동화하는 법 (Utility Container 활용법 포함!)

얇은생각 2025. 9. 24. 07:30
반응형

솔직히 이젠 긴 명령어 좀 지겹지 않나요?

혹시 docker run 명령어를 몇 번이나 쳐보셨나요? 전 한동안 거의 복사-붙여넣기 장인이 된 줄 알았어요. npm 명령 하나 돌리려고 매번 터미널에 복잡한 옵션 붙여서 쓰다 보면, 이게 개발인지 명령어 암기 대회인지 헷갈릴 정도예요.

그러다 알게 된 게 바로 utility container. 이걸 알고 나선 진짜 ‘와, 이걸 왜 이제 알았지?’ 싶었어요.

오늘은 이 utility container를 어떻게 활용하면 진짜 개발에만 집중할 수 있는지, 그리고 그걸 어떻게 Docker Compose로 더 쉽게 만들 수 있는지 찐 경험담 섞어서 풀어드릴게요. Laravel 예제도 있으니, 실무에 어떻게 쓰이는지도 한눈에 보일 거예요.

 


 

Utility Container? 그게 뭐야, 먹는 거야?

Utility container라는 건 한마디로 “일회성 작업용 컨테이너”라고 보시면 돼요. 무슨 웹 서버처럼 계속 도는 게 아니라, npm init처럼 한 번 실행하고 끝나는 작업에 딱이에요.

언제 쓰면 좋냐고요?

  • Node나 PHP 같은 거 굳이 설치 안 하고 빠르게 테스트하고 싶을 때
  • 팀원들이랑 똑같은 환경을 써야 할 때
  • 오늘 안에 뭐 하나 뚝딱 만들어야 할 때 (이거 공감하시죠?)

예를 들어, 새로운 프로젝트 시작할 때 npm init 한번 치고 끝내고 싶은데 Node 설치는 귀찮다? 바로 utility container 호출이죠.

 


 

docker run, 처음엔 편했는데 점점 피곤해짐

 

docker run, 처음엔 편했는데 점점 피곤해짐

처음엔 이렇게 씁니다:

docker run -it --rm -v $(pwd):/app node npm init

근데 진짜 문제는, 이렇게 간단한 거 하나 하려고 매번 길고 헷갈리는 명령어 외우고, 오타나면 다시 치고... 아, 스트레스.

'이거 그냥 어디다 저장해두고 단축해서 쓰면 안 되나?' 싶던 찰나, Docker Compose가 떠올랐죠. 설정 파일 하나 만들어두면? 진짜 인생이 편해집니다.

 


 

Docker Compose: 진짜는 단 하나의 container부터 시작된다

많은 분들이 Docker Compose는 여러 container 쓸 때만 필요한 거라고 생각하시는데요, 저도 그렇게 생각했었어요. 근데 아니에요. 하나만 써도 엄청나게 유용해요.

 

왜 좋냐면요:

  • 매번 길게 안 쳐도 되고,
  • 설정은 한 곳에 정리돼 있고,
  • 팀원이랑 공유도 쉽고,
  • 내 컴퓨터 환경 더럽히지도 않고!

한 번만 써보시면 돌아갈 수 없어요. 진짜루.

 


 

Compose 설정? 의외로 간단해요

 

Compose 설정? 의외로 간단해요

docker-compose.yaml 파일 하나 딱 만드세요. 내용은 이렇게:

version: "3.8"

services:
  npm:
    build: .
    stdin_open: true
    tty: true
    volumes:
      - .:/app

 

뭔가 복잡해 보이지만, 하나씩 보면 별 거 없어요:

  • 버전은 그냥 3.8
  • npm이라는 서비스 하나 만들고
  • 빌드 경로는 현재 폴더
  • 사용자 입력 받을 수 있게 설정하고
  • 폴더 연결도 /app으로 딱 해두고요

 

그리고 Dockerfile은 아주 심플하게:

FROM node:latest
WORKDIR /app
ENTRYPOINT ["npm"]

 

이제 진짜 한 줄이면 끝이에요:

docker compose run npm init

 

npm 질문들 나오고 나면 package.json도 폴더에 생겨 있어요. 깔끔하죠?

 


 

docker compose up이 안 되는 이유

 

docker compose up이 안 되는 이유

혹시 처음에 이렇게 써보셨나요?

docker compose up init

전 그렇게 했다가 한참 헤맸어요. 에러 메시지 뜨고 뭔가 이상해서 찾아보니, 이건 background에서 계속 돌 컨테이너용 명령어더라고요.

 

우리는 그냥 ‘작업하고 끝!’ 스타일이니까 run 써야 해요:

docker compose run npm init

 

설치도 마찬가지:

docker compose run npm install express

 

이렇게 하면 OK!

 


 

어? 실행한 container가 없어졌네?

명령어 실행하고 나서 docker ps 해보면 아무것도 안 보여요. 저도 처음엔 뭔가 잘못된 줄 알았죠.

그럴 땐 이걸로 확인하세요:

docker ps -a

 

보셨죠? 종료된 container들이 줄줄이 있어요. 기본적으로는 자동으로 안 지워지거든요.

 

그래서 필요한 --rm

docker compose run --rm npm init

 

이렇게 쓰면 작업 끝나자마자 container도 사라집니다. 깔끔하게 정리되니까 마음이 편하죠.

이미 쌓인 거 한 번에 지우고 싶으시면:

docker container prune

 

개운하게 싹 정리됩니다.

 


 

실전! Laravel 개발 환경도 이렇게 준비해요

Laravel 좋아하시는 분들 많으시죠? 저도 처음엔 뭔가 세팅이 너무 많아서 머리가 아팠는데, utility container 덕분에 한방에 해결됐어요.

  • PHP container로 Laravel 새 프로젝트 만들고
  • Node container로 frontend asset 빌드하고

이러면 PHP, Composer, Node, npm 다 설치 안 해도 됩니다. 말 그대로 깔끔한 dev 환경!

다음 글에서 이거 실전으로 보여드릴게요. 궁금하셨다면 꼭 확인해보세요!

 


 

마무리: 나만 알고 싶은 Docker의 숨은 꿀기능

utility container는 정말 ‘몰랐으면 평생 불편했을 뻔’한 기능이에요. Docker Compose랑 같이 쓰면:

  • 설정은 한 번만 해두면 되고,
  • 명령어는 초간단,
  • 팀이랑 작업할 때도 착착 맞고,
  • 내 컴퓨터도 깔끔하게 유지되고요.

 

한 가지 팁: --rm 옵션은 꼭 기억하세요. 컨테이너 무덤 방지용입니다 😅

저처럼 반복되는 환경 셋업에 지친 분들, 새로운 도구 설치 없이 빠르게 무언가 만들고 싶은 분들께 진심으로 추천드려요.

반응형