Windows:
Mac:
pip install --user docker-compose
brew cask install minikube
Docker command cheatsheet:
docker run -it <image>
docker build -t <image> .
docker push <image>
docker pull <image>
FROM centos:7
COPY target/app.jar /srv/app/app.jar
RUN yum install -y openjdk8
ENTRYPOINT ["java", "-jar"]
CMD "/srv/app/app.jar"
docker run -v c:/Users/aarongorka/.ssh:/root/.ssh ubuntu:latest
docker run -p 8080:8080 nginx:latest
docker run -e DB_USERNAME=foobar drupal
docker run -it ubuntu bash
Browse Docker Hub:
docker run -it --rm -v "$(pwd):/srv/app:Z" -v "${HOME}/.ssh:/root/.ssh:Z" -v "${HOME}/.aws:/root/.aws:Z" -e MY_ENV_VAR -e MY_ENV_VAR_2 -w /srv/app ubuntu:3.5.8 deploy.sh
vs.
docker-compose run deploy
Example docker-compose.yml:
version: '2.0'
services:
kubectl:
image: aarongorka/kubernetes-utils:1.8.4
volumes:
- .:/srv/app:Z
- ~/.kube:/root/.kube:Z
working_dir: /srv/app
builder:
image: aarongorka/java-base-builder:latest
volumes:
- .:/srv/app:Z
- ~/.m2:/root/.m2:Z
working_dir: /srv/app
docker login nexus.example.com -u "${NEXUS_USERNAME}" -p "${NEXUS_PASSWORD}"
docker-compose run --rm builder mvn install -B
docker build -t ${IMAGE_NAME}:${BUILD_VERSION} .
docker push ${IMAGE_NAME}:latest
docker-compose run --rm builder sh -c "envsubst < k8s-config/deployment.tmpl.yml > k8s-config/deployment.yml"
docker-compose run --rm kubectl apply -f k8s-config/deployment.yml
vs.
make nexusLogin build dockerBuild dockerPush deploy
Example Makefile:
build:
docker-compose run --rm builder mvn install -s settings.xml
dockerBuild:
docker build -t $(IMAGE_NAME):$(BUILD_VERSION) .
nexusLogin:
docker login nexus.example.com -u "$(NEXUS_USERNAME)" -p "$(NEXUS_PASSWORD)"
deploy:
docker-compose run --rm --entrypoint=sh builder -c "envsubst < k8s-config/deployment.tmpl.yml > k8s-config/deployment.yml"
docker-compose run --rm kubectl apply -f k8s-config/deployment.yml
### =
# 3 Musketeers
The purpose of Kubernetes is to make it easier to organize and schedule your application across a fleet of machines. At a high level it is an operating system for your cluster.
To be continued…