9 Haziran 2020 Salı

JHipster-8 (Build alma ve Docker deployment)

Merhaba,
bu yazımda jhipster ile oluşturulan bir angular-spring projesinin docker üzerinde nasıl deploy edildiğini inceleyeceğiz.

Paylaşım yapmaya başlamadan önce production image'ı kendi makinemizde ayağa kaldıracağımız için  docker'ın çalışma yaptığınız makinde kurulu olması gerektiğinin hatırlatmasını yapmak isterim.

ilk olarak ptoduction yük almak ve gerekli docker dosyalarını oluşturmak için aşağıdaki komutu terminalden çalıştırın  

jhipster docker-compose 


terminal üzerindnen wizard ile gelen soruları aşağıdaki şekilde yanıtlayın.

? Which *type* of application would you like to deploy? Monolithic application

? Enter the root directory where your applications are located ../
? Which applications do you want to include in your configuration? hipster-angular
? Do you want to setup monitoring for your applications ? No

 

Bu işlemden sonra root(kök) dizinde production yükü almak  için kullanacağımız bir docker-compose.yml dosyası oluşacaktır. oluşan dosya mysql ve geliştirdiğimiz uygulamanın image'ını işaret etmektedir.  Bu işlem sadece ilk build için yapılacaktır. Sonraki buildlere zaten docker-compose.yml elimizde olacağı için tekrardan bu dosyası oluşturmaya gerek yoktur.

Oluşan docker-compose.yml dosyasının içeriği aşağıdaki gibi olacaktır.


version: '2'
services:
hipsterangular:
image: hipsterangular
environment:
- _JAVA_OPTIONS=-Xmx512m -Xms256m
- 'SPRING_PROFILES_ACTIVE=prod,swagger'
- MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true
- 'SPRING_DATASOURCE_URL=jdbc:mysql://hipsterangular-mysql
:3306/hipsterangular?useUnicode=true&characterEncoding=
utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone
=UTC&createDatabaseIfNotExist=true'
- JHIPSTER_SLEEP=30
ports:
- '8080:8080'
hipsterangular-mysql:
image: 'mysql:8.0.20'
environment:
- MYSQL_USER=root
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_DATABASE=hipsterangular
command: mysqld --lower_case_table_names=1 --skip-ssl

    --character_set_server=utf8mb4 --explicit_defaults_for_timestamp 


 

docker compose dosyasını oluşturduktan sonra jib ve maven ile bir docker image'ı oluşturmak için aşağıdaki komutu çalıştırın.

 $ ./mvnw -Pprod verify jib:dockerBuild


jib: docker engine olmadan docker image'ı oluşturamay yarayan bir library dir. 


oluşturulan image'ı görüntülemek için aşağıdaki komutu terminalden çalıştırın.

 $ docker images

 

çıktı aşağıdaki gibi olmalıdır

REPOSITORY              TAG                 IMAGE ID            CREATED              SIZE

hipsterangular          latest              85eb54432ad8        About a minute ago   293MB

 

app.yml dosyasını kaynak göstererek docker image'larını (mysql+app) container olarak ayağa kaldırmak için aşağıdaki docker komutunu çalıştırın.

 $ docker-compose -f src/main/docker/app.yml up -d

 

Tüm bu işlemleri tamamladıktan sorna browser üzerinden http://localhost:8080/ adresine erişince ekrandaki developemnt rozetinin(badge) gittiğini ve production olarak docker üzerinde deploy edildiği görülmektedir.

Yine deployment sonrasında aşağıdaki adresler incelenebilir.
metrikler :  http://localhost:8080/admin/metrics
kullanıcılar : http://localhost:8080/admin/user-management
ayarlar :http://localhost:8080/admin/configuration
eventler : http://localhost:8080/admin/audits
loglar : http://localhost:8080/admin/logs
swagger : http://localhost:8080/admin/docs

Hiç yorum yok:

Yorum Gönder