Bu örnekte Makefile içinde yerel docker komutlarını saklayacağız ve onlarla etkileşim kurmak için make komutunu kullanacağız.


Mevcut komutlar


Komutların hepsi aşağıdaki gibidir. TAG değişkeni eğer sunucu üzerinde ayarlanmamış ise mecburidir.


make build TAG=latest


İmaj kurulumu. Bu, uygulamayı imaj içine kopyalar.


make tag TAG=latest


İmaj etiketleme.


make start TAG=latest


Container başlatma.


make stop TAG=latest


Container durdurma.


make restart TAG=latest


Container yeniden başlatma.


make pull TAG=latest


İmaj çekme.


make push TAG=latest


İmaj iletme.


make clean TAG=latest


Docker artıklarını temizleme.


make login TAG=latest DOCKER_USER=username DOCKER_PASS=password


Docker Hub login.


Yapı


.
├── app
│ ├── a.php
│ └── b.php
├── docker
│ ├── Makefile
│ └── php
│ └── Dockerfile
└── .gitignore

Dosyalar


a.php


echo 'Hello a'.PHP_EOL;

b.php


echo 'Hello b'.PHP_EOL;

Dockerfile


FROM php:7.2-cli-alpine

COPY ./app /app

CMD tail -f /dev/null

Makefile


ifndef TAG
$(error The TAG variable is missing.)
endif

ACCOUNT := inanzzz
SERVICE := hello_php
IMAGE := $(ACCOUNT)/$(SERVICE)


build:
$(info Make: Building "$(TAG)" tagged images.)
@docker build -t $(IMAGE):$(TAG) -f php/Dockerfile ..
@make -s tag
@make -s clean

tag:
$(info Make: Tagging image with "$(TAG)".)
@docker tag $(IMAGE):latest $(IMAGE):$(TAG)

start:
$(info Make: Starting "$(TAG)" tagged container.)
@docker run -dit --name $(SERVICE) $(IMAGE):$(TAG)

stop:
$(info Make: Stopping "$(TAG)" tagged container.)
@docker stop $(SERVICE)
@docker rm $(SERVICE)

restart:
$(info Make: Restarting "$(TAG)" tagged container.)
@make -s stop
@make -s start

push:
$(info Make: Pushing "$(TAG)" tagged image.)
@docker push $(IMAGE):$(TAG)

pull:
$(info Make: Pulling "$(TAG)" tagged image.)
@docker pull $(IMAGE):$(TAG)

clean:
@docker system prune --volumes --force

login:
$(info Make: Login to Docker Hub.)
@docker login -u $(DOCKER_USER) -p $(DOCKER_PASS)