Belajar Merilis Aplikasi di Docker
Menjalankan aplikasi dengan kontainer Docker
Posted by Erwindo SianiparFeb 13, 2020 (5 years ago) · 5 min read
Photo by Johan Taljaard on Unsplash
Hari ini saya mempelajari satu alat yang sangat berguna dalam pengembangan aplikasi. Alat ini bernama Docker, di mana Docker ini sedikit memiliki kesamaan dengan konsep Virtual Machine namun dengan fitur yang lebih memudahkan lagi dalam perilisan aplikasi.
Apa itu Docker?
Docker adalah proyek dengan kode sumber terbuka sebagai produk atau layanan yang ditujukan untuk pengembang aplikasi untuk membangun, mengemas, dan menjalankan aplikasi secara virtual yang berada satu tingkat dalam sistem operasi di dalam sebuah kontainer.
Infrastruktur Docker ini sendiri berada di atas sistem operasi berbasis Unix, selanjutnya aplikasi-aplikasi yang akan di jalankan berada di dalam kontainer. Kontainer-kontainer ini adalah paket-paket aplikasi yang siap untuk dijalankan secara bersamaan.
Gambar di atas memvisualisasikan bahwa aplikasi-aplikasi yang siap untuk dijalankan dari di dalam sebuah kontainer, di mana kontainer itu sendiri berjalan di atas Docker.
Virtual Machine dan Docker
Seperti namanya Virtual Machine (VM) adalah sebuah mesin virtual yang memiliki kemampuan untuk menciptakan mesin komputer dan memiliki kemampuan yang sama dengan mesin komputer penciptanya.
Jika infrastruktur proyek yang dikerjakan menggunakan konsep microservice, konsep VM di atas akan cukup merepotkan, karena harus menginstalasi satu sistem operasi untuk media di mana aplikasi berjalan, coba bayangkan jika proyek tersebut memiliki beberapa aplikasi, maka harus memasang sistem operasi untuk masing-masing microservice dan belum termasuk dengan pemasangan hal yang lain agar aplikasi dapat berjalan dengan baik sesuai dengan kebutuhannya.
Docker sendiri telah mempermudah tahapan-tahapan perilisan aplikasi dengan cara di atas, di mana semua aplikasi-aplikasi berada di dalam satu kontainer yang berajalan di atas Docker. Paket atau aplikasi pendukung hanya perlu dipasang sekali di dalam Docker Image dan jika aplikasi-aplikasi menggunakan konsep microservice maka setiap aplikasinya dapat berbagi sumber yang sama.
Docker Image
Docker Image adalah sebuah objek yang hanya dapat dibaca. Objek ini merupakan aplikasi yang sudah dibuat. Docker Image berfungsi untuk membuat aplikasi yang nanti akan dijalankan di kontainer Docker. Kontainer Docker memungkinkan untuk menjalankan beberapa Docker Image sekaligus di dalamnya. Secara sederhana, Docker Image ini merupakan aplikasi yang sudah siap dijalankan, biasanya sudah dalam bentuk yang dapat dieksekusi (executable).
Kontainer Docker
Kontainer Docker dapat dikatakan sebagai sebuah media tempat aplikasi-aplikasi berjalan. Setiap kontainer Docker yang disimpan terdapat Docker Image di dalamnya. Kontainer Docker juga memungkinkan untuk melakukan duplikasi. Kontainer Docker ini nantinya dapat dijalankan sehingga aplikasi dapat digunakan selayaknya seperti aplikasi yang sudah dirilis.
Menggunakan Docker
Untuk menggunakan Docker, maka diperlukan Docker yang sudah terpasang di sistem komputer, lakukan pemasangan Docker di lokal komputermu, untuk cara pemasangannya silahkan ikuti tutorial dari tautan di bawah ini.
Pertama buat sebuah folder untuk menempatkan proyek Docker.
# Make new project folder mkdir BELAJAR-DOCKER # Go to folder cd BELAJAR-DOCKER
Selanjutnya perlu membuat satu fail
Dockerfile
yang berguna untuk initialisasi Docker.# Make a new file touch Dockerfile
Perintah di atas akan membuat satu
Dockerfile
yang masih kosong, yang nanti akan diisi perintah untuk menjalankan Docker. Dan selanjutnya isi fail Dockerfile
dengan perintah di bawah ini.# Use Alpine Golang version FROM golang:alpine # Go to working directory WORKDIR /work # Copy all file from root into working directory ADD . . # Make an app into executable RUN go build -o /hello . # Back to root directory WORKDIR / # Remove unused working directory RUN rm -r /work # Open port :8080 EXPOSE 8080 # Executing the app CMD ["/hello"]
Konfigurasi Docker di atas sudah cukup untuk aplikasi sederhana yang akan dibuat.
Antarmuka Aplikasi Pemrograman di Docker
Selanjutnya membuat Antarmuka Aplikasi Pemrograman (API) sederhana yang akan dijalankan di Docker. Dalam studi kasus kali, ini aplikasi akan dibuat menggunakan bahasa pemrograman Golang, aplikasinya hanya akan menampilkan respon berupa pesan dengan format
JSON
saat dikunjungi.Pertama-tama, buatlah fail dengan nama
main.go
.package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { // New gin engine g := gin.New() // Make root handler g.GET("/", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "message": "Hello World", }) }) // Serving the app via port :8080 g.Run(":8080") }
Selanjutnya untuk menjalankan API tersebut dengan Docker, buatlah satu fail dengan nama
docker-compose.yml
dan isi dengan kode di bawah ini.version: "3.9" services: web: build: context: . dockerfile: Dockerfile image: hello/hello container_name: hello ports: - 8080:8080
Jalankan Docker
Untuk menjalankan aplikasi tersebut dengan Docker terbilang cukup mudah, karena dengan sistem Docker Compose yang sudah dibuat sebelumnya.
Perintah untuk menjalankan Docker.
# Run Docker and quit with detach docker compose up -d
Dengan perintah di atas, maka aplikasi akan dibuatkan menjadi executable dan dijalankan secara langsung oleh Docker, untuk menjalankan aplikasi tersebut akses aplikasi melalui alamat berikut di aplikasi peramban atau aplikasi penguji protokol transfer hipertext.
🌐http://localhost:8080
Menghentikan Docker
Untuk menghentikan aplikasi maka hanya menjalankan perintah
takedown
dengan perintah berikut.# Takedown service Docker docker compose down
More from Erwindo SianiparSee all