16/09/2018 - DOCKER, LINUX
Bu örnekte Makefile içinde yerel docker komutlarını saklayacağız ve onlarla etkileşim kurmak için make
komutunu kullanacağız.
Komutların hepsi aşağıdaki gibidir. TAG
değişkeni eğer sunucu üzerinde ayarlanmamış ise mecburidir.
İmaj kurulumu. Bu, uygulamayı imaj içine kopyalar.
İmaj etiketleme.
Container başlatma.
Container durdurma.
Container yeniden başlatma.
İmaj çekme.
İmaj iletme.
Docker artıklarını temizleme.
Docker Hub login.
.
├── app
│ ├── a.php
│ └── b.php
├── docker
│ ├── Makefile
│ └── php
│ └── Dockerfile
└── .gitignore
echo 'Hello a'.PHP_EOL;
echo 'Hello b'.PHP_EOL;
FROM php:7.2-cli-alpine
COPY ./app /app
CMD tail -f /dev/null
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)