Monday, 14 March 2022

Using Makefile in Docker projects

 

To wrap docker build and docker run commands which contain multiple arguments into simpler make commands we can add Makefile to Docker-based projects.

Makefile example:
 
DOCKER_IMAGE_NAME := my-app

build:
#    cp -R ~/.aws ./my_db/.aws
#    docker image rm $(DOCKER_IMAGE_NAME) || (echo "Image $(DOCKER_IMAGE_NAME) didn't exist so not removed."; exit 0)
    docker build -t $(DOCKER_IMAGE_NAME) .
run:
#   Usage: make run AWS_REGION=us-east-1 AWS_DEFAULT_OUTPUT=json AWS_ACCESS_KEY_ID=id AWS_SECRET_ACCESS_KEY=key
    docker run \
        -e AWS_REGION=$(AWS_REGION) \
        -e AWS_DEFAULT_OUTPUT=$(AWS_DEFAULT_OUTPUT) \
        -e AWS_ACCESS_KEY_ID=$(AWS_ACCESS_KEY_ID) \
        -e AWS_SECRET_ACCESS_KEY=$(AWS_SECRET_ACCESS_KEY) \
        -v "$(shell pwd)"/shared:/usr/src/my-app/out/ \
        --rm \
        --name $(DOCKER_IMAGE_NAME) \
        $(DOCKER_IMAGE_NAME) 

To build the Docker image: 

$ make build

To run it:

$ make run AWS_REGION=us-east-1 AWS_DEFAULT_OUTPUT=json AWS_ACCESS_KEY_ID=<id> AWS_SECRET_ACCESS_KEY=<key>


No comments: