Hari ini aku mengulang kembali materi tentang docker. Aku tulis supaya aku bisa inget. Sesederhana itu motivasinya. Untuk kali ini aku akan deploy web berisi profil, portfolioku, berbasis image httpd di Dockerhub. Skenarionya adalah:
1. Syaratnya, punya akun di AWS, kemudian deploy EC2 berbasis ubuntu. Lakukan remote melalui ssh.
2. EC2 diberi nama Giri_DevOps.
3. Didalam EC2 install Docker, Docker compose,Git. Lihat gambar diatas. Silakan cari cara install Docker dan Docker Compose di github. Selain itu kita juga harus punya akun di github.
4. Langkah selanjutnya adalah melakukan pull httpd dari dockerhub: >>> docker pull httpd . Jika sudah selesai pull maka akan terlihat images ada di lokal kita. >>> docker image tag httpd:latest giri021-httpd (untuk melakukan tagging image dilokal)
5. Langkah berikutnya adalah git clone repository di github:
Repository ini isinya adalah web sederhana tanpa database. >> git clone https://github.com/giri021/portfolioku.git
Maka akan ada folder baru dengan nama portfolioku. Silakan cd ke portfolioku.
6. Sekarang kita inspect image httpd dan kita peroleh working direktori nya. ubuntu@ip-10–21–4–xx:~$ docker image inspect giri021-httpd Akan kita temukan “WorkingDir”: “/usr/local/apache2”, ini nanti akan kita mount dengan isi dari folder /home/ubuntu/portfolioku.
Isi dari /home/ubuntu/portfolioku akan identik dengan /usr/local/apache2/htdocs
File index.html ada di /usr/local/apache2/htdocs <<<<
7. Langkah selanjutnya adalah menjalankan image giri021-httpd didalam container.
ubuntu@ip-10–21–4–xx:~/portfolioku$ docker run -it -d — name giri-testing -v $PWD:/usr/local/apache2/htdocs -p 0:80 giri021-httpd
*Catatan: -p 0:80 dapat dipahami seperti ini, -p (publish) adalah untuk menentukan port berapa yang akan digunakan/dibuka. Dengan menggunakan angka 0 adalah maka port host yang digunakan akan random. Semua traffic ke random host akan diarahkan ke port 80 di container giri021-httpd.
8. Untuk memastikan bahwa isi dari /usr/local/apache2/htdocs == /home/ubuntu/portfolioku . Mari kita cek:
9. Untuk melihat hasil dari deploy web dengan basis image tadi yang kita jalankan didalam container. http://54.70.17.154:32771/
10. Akan semakin ciamik jika kita menggunakan layanan AWS yaitu route53 untuk menggunakan domain yang kita punya. Aplikasi berbasis web ini hanya bersifat sementara. Karena habis ini aku delete container yang berjalan. Uji testing saja.
Hai semua..apa kabar? Hari ini aku nulis lagi. Ini masih ada kaitannya dengan artikel sebelumnya. Silakan dicek disini: https://medium.com/@ag.giri.hartono/deploy-web-sederhana-menggunakan-docker-dengan-opsi-v-volume-e8766ee91d03
Kalau versi sebelumnya kita menggunakan opsi volume untuk melakukan perubahan konten dari isi web berbasis httpd. Sekaligus redundan konten web. Maka kali ini kita akan melakukan custom di image nya.
Jadi image httpd yang ini akan berisi juga konten web yang ada di github: https://github.com/giri021/portfolioku.git
1. Langkah pertama adalah memastikan ada Dockerfile di direktori portfolioku
2. Kita bekerja dalam direktori portfolioku. Disitu ada source code web apps dan Dockerfile
3. Isi dari Dockerfile simple saja sih, ada FROM yang isinya image official dari httpd:2.4 | versi nya pakai 2.4 . Kemudian COPY isi dari folder portfolioku ke /usr/local/apache2/htdocs/
4. Proses build image sukses dengan nama image baru httpd-custom yang isinya . || Apa itu titik, titik disini adalah isi file dalam working direktori
5. Langkah selanjutnya adalah menjalankan container berbasis image custom httpd-custom tadi
6. Untuk menjalankan image didalam container, kita bisa dengan perintah:
ubuntu@ip-10–21–4–52:~/portfolioku$ docker run -it -d — name http-custom -p 0:80 httpd-custom
Dimana tag nama adalah http-custom dengan images httpd-custom dipublish lewat port 80 dimana semua traffic menuju host 0 (random port) akan diarahkan ke port 80 container httpd
7. Perhatikan pula port host yang diperoleh yaitu http://54.70.17.154:32773/ >> 32773 cukup random bukan?
8. Hasil dari deploy web berbasis image custom dapat anda lihat disini:
I tried few steps and was able to get around to push it finally. Hope this helps someone. Here are the steps worked for me :
1) Login to the docker. Please fill password with your password in dockerhub:
docker login -u giri021
2) Tag your image build before push
your image name here is : yourlocalimage and by default it has tag : latest and my username is : giri021 as registered with docker cloud, and I created a public repository named : dockerhub
so my personal repository becomes now : giri021/dockerhub and I want to push my image with tag : myfirstimagepush
I tagged as below :
docker tag yourlocalimage:latest giri021/dockerhub:myfirstimagepush
3) Pushed the image to yourpersonal docker repository as below
docker push giri021/dockerhub:myfirstimagepush
Just wait for few second & it successfully pushed to your personal docker repo.