import ( "코딩", "행복", "즐거움" )

docker-compose를 외치는 흑마술 'Makefile' 소개 본문

Docker

docker-compose를 외치는 흑마술 'Makefile' 소개

더코드마니아 2023. 3. 3. 11:04

 

docker 교육을 하다가  docker-compose는 매번 타이핑하기 귀찮다.

뭔가 좋은 방법 없을까~'라는 생각에 찾은 Makefile을 소개하고자 한다.

 

 

Makefile이란?

Make라는 프로그램 빌드 작업을 자동화하는 도구의 규칙을 기술한 텍스트 파일입니다.

 

마법서(Makefile) 만들기
Makefile이라는 이름의 파일을 생성하고 아래 내용을 저장합니다.

 

.PHONY: setup up d b ps node

setup:
	@make up
	@make ps
d:
	docker compose down
up:
	docker compose up -d
ps:
	docker compose ps
node:
	docker compose exec node bash

makefile의 내용입니다.
.PHONY를 기재하지 않으면 명령어와 같은 이름의 파일이 있을 경우 충돌이 발생하여 명령어를 실행할 수 없습니다. (저는 빠졌습니다.)


@make 명령어를 사용하면 명령을 한꺼번에 처리할 수 있습니다.
@는 에코하지 않는다는 의미라고 합니다
명령어 내용의 들여쓰기는 Tab을 사용해야 합니다.

 

마법의 시전(make 명령어 실행)
make 명령어로 사용할 수 있습니다.
명령어를 사용해 보기 위해 yml 파일을 준비했습니다.

version: '3.9'
services:
  node:
    image: node:18-slim
    tty: true
    init: true
    ports: 
      - '4000:4000'
    volumes:
     - ./node:/node

실제로 wsl에서 사용해 봅시다.
make setup으로 컨테이너를 실행하여 컨테이너의 상태를 확인해 봅시다.

root@sun33 /home/sun33/qiita/makefil # make setup
make[1]: Entering directory '/home/sun33/qiita/makefile'
docker compose up -d
[+] Running 2/2
 ⠿ Network makefile_default   Created                                                                                  0.0s
 ⠿ Container makefile-node-1  Started                                                                                  0.5s
make[1]: Leaving directory '/home/sun33/qiita/makefile'
make[1]: Entering directory '/home/sun33/qiita/makefile'
docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
makefile-node-1     "docker-entrypoint.s…"   node                running             0.0.0.0:4000->4000/tcp, :::4000->4000/tcp
make[1]: Leaving directory '/home/sun33/qiita/makefile'
root@sun33 /home/sun33/qiita/makefile #

두 가지 명령을 실행할 수 있었네요.
make node로 node 컨테이너 안에 들어가 보겠습니다.

 

root@sun33 /home/sun33/qiita/makefile # make node
docker compose exec node bash
root@333c33c333c:/#

PHONY가 기재되어 있지 않은 경우, 동일한 파일이 있으면 명령을 실행할 수 없습니다.

root@sun33 /home/sun33/qiita/makefile # make node
make: 'node' is up to date.

ctrl + D 또는 exit 명령으로 컨테이너 내부에서 나와서 컨테이너를 파괴해 봅니다.

 

root@sun33 /home/sun33/qiita/makefile # make d
docker compose down
[+] Running 2/2
 ⠿ Container makefile-node-1  Removed                                                                                  0.4s
 ⠿ Network makefile_default   Removed                                                                                  0.2s
root@sun33 /home/sun33/qiita/makefile #

 

make 명령어를 사용하면 docker-compose의 긴 명령어를 입력하지 않고도 손쉽게 명령어를 조작할 수 있게 되었습니다.

windows의 경우
windows의 경우 기본적으로 make 명령어를 사용할 수 없습니다.
make를 install하여 설정해 주어야 합니다.

 

정리
이제 make 명령이 너무 편해서 손에서 놓을 수 없게 되었습니다.
정말 편리하니 다양한 명령어를 정의해서 사용해보시기 바랍니다. 끝입니다.

 

원문 : https://qiita.com/sun33/items/d728bc9ec27129b53e17

 

docker-composeを詠唱する黒魔術「Makefile」入門 - Qiita

はじめに dockerの研修をやってた時に、「うーん、docker-composeって毎回打つのめんどくさい。なにかいい方法ないかな~」で見つけたMakefileを紹介したいと思います。 Makefileとは? Makeというプ

qiita.com