git --version git config --global user.name "Nama Saya" git config --global user.email "nama.saya@gmail.com"
java -version javac -version
gradle --version
docker version docker info
docker-machine version
docker-compose version
VirtualBox --help
zypper in git
zypper in virtualbox
zypper in mongodb systemctl start mongodb systemctl stop mongodb ss -plntu # atau netstat -plntu mongo
use admin
db.createUser({user:"admin", pwd:"R@has14iz3", roles:[{role:"root", db:"admin"}]})
show dbs
mongo -u admin -p R@has14iz3 --authenticationDatabase admin
show dbs
zypper in docker
zypper install python3-docker-compose
curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-Linux-x86_64 > docker-machine-Linux-x86_64-v0.14.0 sudo install docker-machine-Linux-x86_64-v0.14.0 /usr/local/bin/docker-machine
zypper install java-1_8_0-openjdk-devel update-alternative --all # pilih jdk 8 untuk java, javac, jdk ...
zypper install tomcat tomcat-webapps tomcat-docs-webapp tomcat-admin-webapps
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk version sdk install gradle 4.8.1 exit terminal, buka terminal lagi
mkdir DockerSpringApp cd DockerSpringApp
git clone https://github.com/garystafford/spring-music-docker music cd music git checkout docker_v2 cd ..
git clone https://github.com/garystafford/spring-music cd spring-music git checkout springmusic_v2 cd ..
code .
music/docker-compose.yml berisi informasi port forwarding docker, image docker, volume docker yang digunakan, link ke beberapa konfigurasi docker
music/mongodb/Dockerfile berisi informasi image docker mongodb, database yang digunakan di aplikasi
music/nginx/Dockerfile berisi informasi image docker nginx, web server dan reverse proxy, digunakan untuk menjembatani aplikasi tomcat java spring ke web server
music/tomcat/Dockerfile berisi informasi image docker tomcat, server aplikasi spring java yang digunakan
music/spring-music/build.gradle
music/nginx/default.conf berisi konfigurasi web server dan konfigurasi reverse proxy dan load balancing dari server tomcat ke web server konfigurasi revese proxy dengan tiga instance tomcat container ada di bagian "upstream backend {"
- resources\config.properties
...
mongodb.username=admin
mongodb.password=R@has14iz3
mongodb.authdb=admin
- org.cloudfoundry.samples.music.config.data.MongoConfig:
...
import java.util.Arrays;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
...
@Value("${mongodb.username}")
private String mongoUsername;
@Value("${mongodb.password}")
private String mongoPassword;
@Value("${mongodb.authdb}")
private String mongoAuthDatabase;
...
// credential
MongoCredential credential = MongoCredential.createCredential(mongoUsername, mongoAuthDatabase, mongoPassword.toCharArray());
// server
ServerAddress serverAddress = new ServerAddress(mongoUrl, mongoPort);
MongoClient mongoClient = new MongoClient(serverAddress, Arrays.asList(credential));
return new SimpleMongoDbFactory(mongoClient, mongoDatabase);
gradle clean build tomcatRun -Dspring.profiles.active=mongodb -Dmongodb.url=127.0.0.1 browser http://localhost:8080/spring-music
mongodb.url=127.0.0.1
cd DockerSpringApp/spring-music gradle clean build gradle warNoStatic warCopy zipGetVersion zipStatic cd ..
cd DockerSpringApp/ sudo rpm -ql tomcat | grep tomcat-users sudo mv /etc/tomcat/tomcat-users.xml /etc/tomcat/tomcat-users.xml.old sudo cp music/tomcat/tomcat-users.xml /etc/tomcat/tomcat-users.xml
sudo rpm -ql tomcat-webapps # dapatkan drektory webapps, /srv/tomcat/webapps sudo mv /srv/tomcat/webapps/ROOT/ /srv/tomcat/webapps/_ROOT # backup sudo cp spring-music/build/distributions/spring-music.war /srv/tomcat/webapps/ROOT.war
sudo systemctl start tomcat # jalankan sudo tail -f /var/log/tomcat/catalina.out sudo systemctl stop tomcat # stop
mongodb.url=127.0.0.1
cd DockerSpringApp/
extraks tomcat ke ~/apache-tomcat-9.0.10
tar zxvf ~/Downloads/apache-tomcat-9.0.10.tar.gz -C /
TOMCAT_DIR=/apache-tomcat-9.0.10
mv $TOMCAT_DIR/conf/tomcat-users.xml $TOMCAT_DIR/conf/tomcat-users.xml.old
cp music/tomcat/tomcat-users.xml $TOMCAT_DIR/conf/tomcat-users.xml
mv $TOMCAT_DIR/webapps/ROOT $TOMCAT_DIR/webapps/_ROOT # backup cp spring-music/build/libs/spring-music.war $TOMCAT_DIR/webapps/ROOT.war
#cp spring-music/build/distributions/spring-music.war $TOMCAT_DIR/webapps/ROOT.war
$TOMCAT_DIR/bin/startup.sh tail -f $TOMCAT_DIR/logs/catalina.out mkdir -p $TOMCAT_DIR/webapps/ROOT/assets #unzip spring-music/build/distributions/spring-music-static.zip -d $TOMCAT_DIR/webapps/ROOT/assets $TOMCAT_DIR/bin/shutdown.sh
zypper in nginx /usr/sbin/nginx -t -c /home/gk/Documents/Projects/DockerSpringApp/music/nginx/default.conf
docker pull mongo:latest
docker pull nginx:latest
docker pull tomcat:8.5.4-jre8
docker pull sebp/elk:latest
docker-machine create --driver virtualbox springmusic atau offline dengan iso yang sudah ada/di-download docker-machine create --driver virtualbox --virtualbox-boot2docker-url file://$HOME/Downloads/boot2docker.iso springmusic
url https://github.com/boot2docker/boot2docker/releases/download/v18.05.0-ce/boot2docker.iso
docker-machine env springmusic && eval "$(docker-machine env springmusic)"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: R@has14iz3
docker volume create --name music_data docker volume create --name music_elk docker volume ls # melihat docker volume yang dibuat
docker network create -d bridge music_net # tidak usah dicreate juga bisa docker network ls
docker save -o springmusic.tar
mongo:latest
nginx:latest
tomcat:8.5.4-jre8
sebp/elk:latest
eval $(docker-machine env springmusic) docker load -i springmusic.tar docker images
cd DockerSpringApp/music/
eval $(docker-machine env springmusic)
docker-compose -p music up -d elk && sleep 15
&& docker-compose -p music up -d mongodb && sleep 15
&& docker-compose -p music up -d app
&& docker-compose scale app=3 && sleep 15
&& docker-compose -p music up -d proxy && sleep 15
ganti ke
docker-compose -p music up -d elk && sleep 15
&& docker-compose -p music up -d mongodb && sleep 15
&& docker-compose -p music up -d app --scale 3 && sleep 15
&& docker-compose -p music up -d proxy && sleep 15
docker-machine ip springmusic
tidak bisa browsing elk ternyata containernya langsung stop ketika dipanggil localhost:9200 atau host:9200 docker exec -ti elk /bin/bash
di test pakai mongodb-compass
docker-compose stop docker-compose rm -v docker-compose down # hapus container dan network docker-compose down --volumes # hapus container dan network dan volume docker volume rm music_data docker volume rm music_elk
ss -lntu netstat -lntu cat /etc/services
Spring Music Application: 192.168.99.100 NGINX Status: 192.168.99.100/nginx_status Tomcat Web Console – music_app_1*: 192.168.99.100:32771/manager Environment Variables – music_app_1: 192.168.99.100:32771/env Album List (RESTful endpoint) – music_app_1: 192.168.99.100:32771/albums Elasticsearch Info: 192.168.99.100:9200 Elasticsearch Status: 192.168.99.100:9200/_status?pretty Kibana Web Console: 192.168.99.100:5601
docker run -it --rm tomcat:8.5.4-jre8 # http://container-ip:8080/ # ip contaner docker inspect | grep "IPAddress" docker run -it -p 8888:8080 --rm tomcat:8.5.4-jre8 # http://host-ip:8080/ docker exec -ti %container-name-or-id% /bin/bash
docker run --name some-mongo -d mongo:tag docker run -it --link some-mongo:mongo --rm mongo mongo --host mongo test
- pasang docker
- pasang jdk
- pasang gradle dengan sdkman
- pasang virtualbox
- pasang git
- cek jdk terinstall
- cek gradle terinstall
- cek docker terinstall
- cek git terinstall dan konfigurasi git
- cari image tomcat di docker hub
- penjeasan dockerhub terkait pull, halaman depan dan halaman tag
- cek ukuran images di dockerhub
- pull image tomcat, tag standar dan bisa custom tag
- lihat docker yang sudah di pull
- coba run image tomcat tidak pakai port binding dan pakai port binding
- pull dan run image hello
- lihat container yang running, container yang di stop
- cek ip container
- arsitektur docker, hubungan antara container ke host
- perbedaan antara docker di host langsung dan yang pakai docker vm
- cek storage docker di fisik
- lihat container yang lagi jalan, container id dan container name
- save image, hapus images, load has save image, save container
- pengertian devops
- pengertian docker compose, penamaan running contaner, scale container, parameter container
Artikel Asal https://programmaticponderings.com/2016/08/07/spring-music-revisited-java-spring-mongodb-web-app-with-docker-1-12/ Git https://git-scm.com/ Java JDK http://www.oracle.com/technetwork/java/javase/overview/index.html Gradle https://gradle.org/ Docker https://www.docker.com/ Docker Machine https://github.com/docker/machine Docker Compose https://github.com/docker/compose Virtualbox https://www.virtualbox.org/ Image Docker MongoDB https://hub.docker.com/_/mongo/ Image Docker NGinx https://hub.docker.com/_/nginx/ Image Docker Apache Tomcat https://hub.docker.com/_/tomcat/ Image Docker ELK Sebp https://hub.docker.com/r/sebp/elk/