docker-machine create -d virtualbox devel
eval "$(docker-machine env devel)"
SWARM_TOKEN=$(docker run swarm create)
echo $SWARM_TOKEN
docker-machine create -d virtualbox --swarm --swarm-master \
--swarm-discovery token://$SWARM_TOKEN \
master
eval "$(docker-machine env master)"
CONSUL_MASTER_IP=$(docker-machine ip master)
docker run -d --name consul -h consul \
-p $CONSUL_MASTER_IP:8300:8300 \
-p $CONSUL_MASTER_IP:8301:8301 \
-p $CONSUL_MASTER_IP:8301:8301/udp \
-p $CONSUL_MASTER_IP:8302:8302 \
-p $CONSUL_MASTER_IP:8302:8302/udp \
-p $CONSUL_MASTER_IP:8400:8400 \
-p $CONSUL_MASTER_IP:8500:8500 \
-p $CONSUL_MASTER_IP:53:53 \
-p $CONSUL_MASTER_IP:53:53/udp \
progrium/consul \
-server \
-advertise $CONSUL_MASTER_IP \
-bootstrap
REGISTRATOR_MASTER_IP=$(docker-machine ip master)
docker run -d --name registrator -h registrator \
-v /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator \
consul://$CONSUL_MASTER_IP:8500 \
-ip $REGISTRATOR_MASTER_IP
docker build -t microservice/nginx-consul dockers/nginx-consul
docker run -d --name nginx-consul -p 80:80 -p 443:443 --dns $CONSUL_MASTER_IP \
microservice/nginx-consul
docker-machine create -d virtualbox --swarm \
--swarm-discovery token://$SWARM_TOKEN \
nodo-1
docker-machine create -d virtualbox --swarm \
--swarm-discovery token://$SWARM_TOKEN \
nodo-2
eval "$(docker-machine env nodo-1)"
NODO1_IP=$(docker-machine ip nodo-1)
docker run --name consul1 -d -h consul1 \
-p $NODE1_IP:8300:8300 \
-p $NODE1_IP:8301:8301 \
-p $NODE1_IP:8301:8301/udp \
-p $NODE1_IP:8302:8302 \
-p $NODE1_IP:8302:8302/udp \
-p $NODE1_IP:8400:8400 \
-p $NODE1_IP:8500:8500 \
-p $NODE1_IP:53:53 \
-p $NODE1_IP:53:53/udp \
progrium/consul \
-server \
-advertise $NODO1_IP \
-join $CONSUL_MASTER_IP
eval "$(docker-machine env nodo-2)"
NODO2_IP=$(docker-machine ip nodo-2)
docker run --name consul2 -d -h consul2 \
-p $NODE2_IP:8300:8300 \
-p $NODE2_IP:8301:8301 \
-p $NODE2_IP:8301:8301/udp \
-p $NODE2_IP:8302:8302 \
-p $NODE2_IP:8302:8302/udp \
-p $NODE2_IP:8400:8400 \
-p $NODE2_IP:8500:8500 \
-p $NODE2_IP:53:53 \
-p $NODE2_IP:53:53/udp \
progrium/consul \
-server \
-advertise $NODO2_IP \
-join $CONSUL_MASTER_IP
eval "$(docker-machine env nodo-1)"
docker run --name registrator-1 -d -h registrator-1 \
-v /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator \
consul://$NODO1_IP:8500 \
-ip $NODO1_IP
eval "$(docker-machine env nodo-2)"
docker run --name registrator-2 -d -h registrator-2 \
-v /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator \
consul://$NODO2_IP:8500 \
-ip $NODO2_IP
SWARM_NODES=("master" "nodo-1" "nodo-2" )
for NODE_NAME in "${SWARM_NODES[@]}"; do
DOCKER_FILES=$(find $(pwd dockers) -name Dockerfile | grep -v nginx-consul)
for DOCKER_FILE in $DOCKER_FILES; do
eval "$(docker-machine env $NODE_NAME)"
DOCKER_NAME=$(basename $(dirname $DOCKER_FILE))
docker build -t microservice/$DOCKER_NAME $(dirname $DOCKER_FILE)
done
done
eval "$(docker-machine env --swarm master)"
docker info
# Metemos en /etc/hosts los dominios hello.api.dev
# y web.api.dev apuntando a la ip de master
docker-compose up -d
docker-compose scale hello=3
docker-compose scale web=2
http://telemaco.github.io/docker-microservices