Log in to https://labs.play-with-docker.com/
alias build-machine='docker run --rm -it -v $PWD:/my -w /my maven:3-jdk-9-slim'
build-machine bash
# inside the container
mvn -q archetype:generate # filter: jdk9, item #1, group: grp, artifactId:yourname-jdk
cd yourname-jdk
mvn -q package
java -jar target/yourname-jdk-1.0-SNAPSHOT.jar
# close the container ^d
docker build -t test yourname-jdk
docker run --rm test
alias build-machine='docker run --rm -it -v $PWD:/my -w /my maven:3-jdk-9-slim'
build-machine mvn -q archetype:generate
# filter: dropwizard-app, item #1, group: grp, artifactId:yourname-dw
cd yourname-dw
build-machine mvn -q package
docker build -t test .
docker run --rm -p 8080:8080 test
docker-compose up -d
# verify the services are up using
docker-compose ps
Uncomment db definition in docker-compose.yml. Repeat last step.
Shutdown the cluster using docker-compose down
. Launch it again and verify that the data is there.
Try scaling using docker-compose scale yourname-dw=3
. Doesn't work.
Edit the docker-compose.yml, removing 8081, 3306 ports, and remove mapping for 8080.
version: "3"
services:
yourname-dw:
build: .
image: yourname-dw:1.0-SNAPSHOT
ports:
- "8080"
environment:
JDBC_DRIVER: "com.mysql.cj.jdbc.Driver"
JDBC_URL: "jdbc:mysql://db:3306/mydb?useSSL=false"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: 123456
MYSQL_DATABASE: mydb
volumes:
- yourname-dw-volume:/var/lib/mysql
volumes:
yourname-dw-volume
run:
docker-compose down
docker-compose up -d --scale yourname-dw=3
docker swarm init --advertise-addr $YOUR_IP
wget https://eitan101.github.io/containers/manifests-examples/myapp/docker-compose.yml
docker deploy -c docker-compose.yml my
docker service ls
docker service scale my_myapp=3
# open http://{host_ip}:8080
docker service ls
docker service logs -f my_myapp
docker stack rm my
In the play with docker
site:
- Delete your instance
- Press the wrench icon
- Choose 2 Managers and 3 workers template.
From the manager1
instance repeat the previous scenario, skipping the swarm init
command.
Repeat previous section but add before:
docker run -it -d -p 18080:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer
Do the same with
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
alias build-machine='docker run --rm -it -v $PWD:/my -w /my maven:3-jdk-9-slim'
build-machine mvn -q archetype:generate
# filter: dropwizard-app, item #1, group: grp, artifactId:myapp
cd myapp
build-machine mvn -q package
docker-compose build
docker swarm init --advertise-addr $YOUR_IP
docker deploy -c docker-compose.yml my
docker service ls
docker service scale my_myapp=3
# open http://{host_ip}:8080
docker service ls
docker service logs -f my_myapp
docker stack rm my
Scenario can be found here
Scenario can be found here
Install minikube.
alias build-machine='docker run --rm -it -v $PWD:/my -w /my maven:3-jdk-9-slim'
build-machine mvn -q archetype:generate
# filter: dropwizard-app, item #1, group: grp, artifactId:myapp
# or: git clone https://github.com/eitan101/containers.git && cd containers
cd myapp
build-machine mvn -q package
minikube start
eval $(minikube docker-env)
docker-compose build
kubectl apply -f k8s.yml
watch kubectl get pods
minikube service myapp
# update app "replicas: 1" to 3
kubectl apply -f k8s.yml
# minikube stop/start - to test data persistancy
kubectl delete -f k8s.yml
kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-service-type=NodePort&k8s-version=$(kubectl version | base64 | tr -d '\n')"
minikube service -n weave weave-scope-app
#docker swarm init --advertise-addr $YOUR_IP
wget https://eitan101.github.io/containers/manifests-examples/mykafka/docker-compose.yml
docker deploy -c docker-compose.yml my
watch docker service ls
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
docker service logs -f my_mykafka-consumer
docker service scale my_mykafka-consumer=3
docker service logs -f my_mykafka-consumer
docker stack rm mystack
alias build-machine='docker run --rm -it -v $PWD:/my -w /my maven:3-jdk-9-slim'
build-machine mvn -q archetype:generate -Dfilter=kafka-app
cd mykafka/
build-machine mvn -q package
#docker swarm init --advertise-addr $YOUR_IP
docker-compose build
docker deploy -c docker-compose.yml mystack
watch docker service ls
docker service logs -f mystack_mykafka-consumer
docker service scale mystack_mykafka-consumer=3
docker service logs -f mystack_mykafka-consumer
docker stack rm mystack
Scenario can be found here
Install minikube.
alias build-machine='docker run --rm -it -v $PWD:/my -w /my maven:3-jdk-9-slim'
build-machine mvn -q archetype:generate -Dfilter=kafka-app
# filter: kafka-app, item #1, group: grp, artifactId:mykafka
cd mykafka
build-machine mvn -q package
minikube start
eval $(minikube docker-env)
docker-compose build
kubectl apply -f k8s.yml
open http://0.0.0.0:30000
Install minikube.
minikube start
eval $(minikube docker-env)
kubectl apply -f https://eitan101.github.io/containers/manifests-examples/mykafka/k8s.yml