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)
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:
Post a Comment