DockerにおけるMakefileの書き方

執筆日: 2021-12-11

概要

dockerは今やWordPress構築からアプリ開発まで活躍するオープンプラットフォームです。

ですが、コマンドが長く毎回打っていると疲れますし、なによりコンテナが増えるにつれて停止・起動のための作業が増え、混乱する原因になりえます。

Makefileはそのようなコマンドをエイリアスとしてまとめてくれます。少ないコマンドでまとめて処理が可能になるということです。

前提

makeツールを使用する際に、Macでは標準で組み込まれています。
Windowsでは組み込まれていませんので、makeツールをインストールする必要があります。

記述例

ここではdocker-compose.ymlを使用する前提です。

通常

docker-compose.yml
version: '3'
services:
    db:
        container_name: "${PRODUCTION_NAME}_db"
        image: mysql:5.7
        ports:
            - "3306:80"
        volumes:
            - ./db/mysql:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress
            MYSQL_PASSWORD: wordpress
    wordpress:
        container_name: "${PRODUCTION_NAME}_wp"
        depends_on:
            - db
        image: wordpress:latest
        ports:
            - "${LOCAL_SERVER_PORT}:80"
        volumes:
            - ./app/wp-content:/var/www/html/wp-content
        environment:
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_NAME: wordpress
            WORDPRESS_DB_USER: wordpress
            WORDPRESS_DB_PASSWORD: wordpress
    phpmyadmin:
        container_name: "${PRODUCTION_NAME}_phpmyadmin"
        image: phpmyadmin/phpmyadmin:latest
        ports:
            - "${LOCAL_DB_PORT}:80"
        depends_on:
            - db

内容はさておき、WordPressを構築する際によくある構成です。
このファイルを実行するには以下のコマンドで良いでしょう。

# 起動
docker compose up
# 停止
docker compose stop
# 再起動
docker compose start
# コンテナ・ネットワーク削除
docker compose down

少し冗長な気がします。毎度docker composeを打つのもタイポする可能性がありますし、いずれかのコマンドをまとめて起動したいこともあります。

Makefile使用

そこでMakefileを使用すると以下のようにできます。

Makefile
up:
    docker compose up
down:
    docker compose down
stop:
    docker compose stop
start:
    docker compose start
restart:
    docker compose down
    docker compose up
# 起動
make up
# 停止
make stop
# 再起動
make start
# コンテナ・ネットワーク削除
make down
# コンテナ・ネットワーク削除後、起動
make restart

というように、短縮してコマンドが打てるようになります。

運営について

Natural Tearoomはシステム開発会社フロントエンドエンジニアがんちゃんが運営するメディアです。
フロントエンド技術を中心に発信しています。

プライバシーポリシー

SNS

SNSも積極的に配信しています。
よければフォローお願いします!

© 2022 天然珈琲店