-
Hilmi Al-Biruni authoredHilmi Al-Biruni authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
README.md 22.59 KiB
Tutorial APAP
Authors
- Hilmi Al Biruni - 2006463843 - APAP-B
Tutorial 8
Pertanyaan 1: Apa itu Dockerfile dan docker-compose.yaml? Apa fungsinya?
Dockerfile adalah file environment agar dapat menggunakan Docker pada proyek springboot tersebut.
Sedangkan docker-compose.yaml adalah alat untuk mendefinisikan dan menjalankan satu atau lebih container yang saling terkait pada sebuah command
Pertanyaan 2: Screenshot hasil perubahan anda. Setelah anda menyelesaikan tutorial ini, menurut anda, mengapa kita perlu mengganti port?
Perubahan port pada docker-compose.yml dilakukan agar kita bisa menggunakan cabang port dari 8080, yaitu 10127. Hal ini untuk mengurangi traffic dengan aplikasi yang menggunakan port serupa.
Pertanyaan 3: Mengapa terdapat versi dev dan prod? File apa yang menentukan konfigurasi mana yang dipakai? Apa yang harus dilakukan untuk menjalankan versi prod? (hint: baca file pada langkah 3 dengan teliti)
application-dev.yml berfokus digunakan untuk tahap development dan productivity, sedangkan application-prod.yml berfokus digunakan untuk tahap performance dan scalability. application-prod.yml juga digunakan untuk menentukan konfigurasi yang dipakai karena didalamnya didefinisikan suatu port tertentu, yaitu 8080 untuk prod dan 2020 untuk prod2.
Dalam menggunakan versi prod, kita memanggilnya pada app.env di bagian SPRING_PROFILES_ACTIVE. Lalu, pada docker-compose.yml akan memanggil app.env pada env_file:. Dari docker-compose.yml akan digunakan oleh Dockerfile sehingga application-prod.yml berhasil digunakan.
Pertanyaan 4: Apa saja yang terjadi di langkah ini?
Saya berpindah ke directory belajarbelajar, lalu melakukan build jar agar menggunakan build versi terbaru, kemudian melakukan build image dengan docker-compose up. Command tersebut berfungsi untuk membangun, membuat, memulai, dan melampirkan container untuk service. Secara tidak langsung, container akan dibuat dan langsung dijalankan tanpa tambahan command lainnya
Pertanyaan 5: Sertakan screenshot container yang sedang berjalan (versi gui atau cli, pilih salah satu). Apa itu docker container, images, dan volume?
Docker container adalah sebuah env untuk docker image yang berisikan paket software agar dapat menjalankan aplikasi seperti kode, config, runtime, system tools, dan system libraries.
Docker images adalah sebuah file yang digunakan untuk mengeksekusi kode pada docker container
Docker volume adalah sebuah file untuk menyimpan data pada aplikasi dari docker container
Pertanyaan 6: Apa perbedaan docker-compose down dan stop?
docker-compose down berfungsi untuk memberhentikan container sekaligus menghapus container, sehingga perlu dilakukan docker-compose build.
docker-compose stop berfungsi hanya untuk memberhentikan container tanpa menghapus container.
Pertanyaan 7: Sertakan screenshot mengakses laman kirti milik anda melalui browser (seperti screenshot di atas)
Pertanyaan 8: Ceritakan pengalaman anda melakukan deployment ke Kirti. Kendala apa yang anda alami?
Hasil dari deployment menggunakan Kirti menurut saya cukup menyenangkan karena kita bisa melihat hasil nyata aplikasi lewat link, yaitu apap-127 dengan domain cs.ui.ac.id. Kendala yang saya alami adalah server kawung sering overload sehingga saya selalu overtime saat melakukan build dan deployment. Contoh spesifiknya adalah saat melakukan upload frontend dan backend, hanya frontend saya yang terupload di kawung, sedangkan backend tidak.
Pertanyaan 9: Buka container docker Anda, lalu screenshot. Apa perbedaan tampilan container sekarang dengan tampilan container pada langkah tutorial docker di awal tadi?
maaf, saya tidak sempat menyertakan screenshoot di awal tahap docker
Perbedaannya adalah pada tahap awal docker, hanya terdiri dari tutorial-apap, db-1, dan web-1. Sedangkan di tahap sekarang, bertambah menjadi tutorial-apap, db-1, web2-1, web-1.
Hal ini dikarenakan pada tahap ini saya membuat 2 port sehingga membutuhkan 2 container, yaitu web2-1 dan web-1.
Pertanyaan 10: Sertakan screenshot tampilan web ketika pertama kali menjalankan localhost:9090 dan tampilan web ketika halaman di-refresh.
Port 8080 sebelum melakukan refresh
Port 2020 setelag melakukan refresh
Pertanyaan 11: Kendala apa yang anda hadapi ketika melakukan tutorial bagian nginx?
Kendala saya adalah ketidaktelitian saya saat melakukan configurasi pada docker-compose.yml. Selain itu, tidak ada kendala lain.
Tutorial 7
Pertanyaan 1: Jelaskan secara singkat perbedaan Otentikasi dan Otorisasi! Di bagian mana (dalam kode yang telah anda buat) konsep tersebut diimplementasi?
Otentikasi adalah proses melakukan verifikasi apakah pengguna yang ingin melakukan login dengan username yang dimiliki terlah tersedia di database dan dapat masuk untuk mengakses aplikasi. Sedangkan, otorisasi adalah proses untuk menentukan hak pengguna apakah pengguna tersebut memiliki akses ke halaman tertentu yang telah ditentukan otentifikasinya.
Implementasi otentikasi pada class WebSecurityConfig
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(encoder());
}
Implementasi otorisasi pada class WebSecurityConfig
http
.authorizeRequests()
.antMatchers("/css/**").permitAll()
.antMatchers("/js/**").permitAll()
.antMatchers("/login-sso", "/validate-ticket").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.and()
.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login").permitAll();