GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Men-deploy Container Docker ke AWS Elastic Beanstalk

Perlu mengotomatiskan penyebaran kontainer Docker? Pernahkah Anda mendengar tentang AWS Elastic Beanstalk? AWS Elastic Beanstalk adalah layanan luar biasa lainnya untuk menerapkan dan menskalakan aplikasi dan layanan web.

Dalam tutorial ini, Anda mempelajari cara menerapkan aplikasi ke AWS Elastic Beanstalk menggunakan EB CLI dan GitHub Actions.

Siap? Baca terus dan mulailah menskalakan aplikasi Anda!

Prasyarat

Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut:

  • AWS Command-Line Interface (CLI) – Tutorial ini menggunakan AWS CLI v2.
  • Pengguna AWS dengan izin Elastic Beanstalk.
  • EB CLI v3.14.6 terpasang
  • Akun GitHub dan repositori GitHub yang sudah disiapkan.

Membuat Host Web Statis Docker

Untuk mendemonstrasikan cara men-deploy container Docker, Anda memerlukan aplikasi terlebih dahulu untuk men-deploy. Dan untuk demo ini, Anda akan menggunakan file HTML.

1. Jalankan git clone perintah di bawah ini untuk mengkloning file HTML dari repositori GitHub.

git clone [email protected]:Adam-the-Automator/aws-elastic-beanstalk.git

2. Selanjutnya, buat Dockerfile dengan editor teks pilihan Anda di root repositori yang Anda kloning (langkah pertama), dan isi file dengan kode di bawah ini.

Kode di bawah ini menampilkan output dari kode HTML (index.html ).

# Get NGINX base image
FROM nginx 

# Add the index file to nginx
ADD index.html /usr/share/nginx/html/

# Expose port to enable elastic beanstalk and connect to the Docker container
EXPOSE 80

3. Jalankan docker build perintah di bawah ini untuk membangun wadah Docker dari file HTML Anda yang disebut html dalam direktori kerja.

docker build -t html .

4. Sekarang, jalankan docker run perintah di bawah ini untuk menjalankan wadah Docker (html ) yang Anda buat sebelumnya (langkah ketiga).

--name flag memberi tahu Docker nama (justhtml ) untuk digunakan saat mereferensikan wadah dalam jaringan. Sedangkan -p flag memetakan port localhost Anda (8080 ) ke port wadah Docker (80 ).

docker run --name justhtml -p 8080:80 html

5. Terakhir, buka browser web Anda dan navigasikan ke http://localhost:8080/ untuk memverifikasi bahwa Anda dapat mengakses wadah Docker (HTML).

Jika semuanya bekerja dengan baik, Anda akan melihat halaman HTML di bawah ini.

Menerapkan Aplikasi ke Elastic Beanstalk melalui AWS CLI

Anda telah memverifikasi bahwa wadah Docker Anda dapat diakses di host Anda, jadi inilah saatnya untuk menerapkan aplikasi Anda ke AWS Elastic Beanstalk. Anda akan menggunakan EB CLI untuk men-deploy container Docker (html) Anda ke AWS Elastic Beanstalk.

Dengan asumsi Anda sudah menyiapkan AWS CLI, Anda tidak perlu melakukan apa pun untuk menyiapkan EB CLI. Mengapa? EB CLI menggunakan kredensial yang sama dengan AWS CLI.

1. Jalankan eb init perintah di bawah ini untuk menginisialisasi lingkungan Pohon Kacang Elastis untuk proyek Anda. Lingkungan memungkinkan Elastic Beanstalk untuk mengidentifikasi jenis aplikasi yang ingin Anda terapkan.

eb init

Setelah menjalankan perintah, Anda akan menerima prompt untuk mengisi rincian. Di bawah, opsi berikut digunakan untuk contoh ini.

  • Wilayah Bawaan: 3
  • Nama Aplikasi: html
  • Tampaknya Anda menggunakan Docker. Apakah ini benar? Y
  • Pilih Cabang Platform: 1
  • Apakah Anda ingin melanjutkan CodeCommit? N
  • Apakah Anda ingin menyiapkan SSH untuk instans Anda? N

2. Selanjutnya, jalankan eb create perintah di bawah ini untuk membuat lingkungan untuk aplikasi Anda di Elastic Beanstalk. Pada dasarnya, Anda menerapkan aplikasi Anda dan Elastic Beanstalk akan menangani sisanya seperti penyeimbangan beban

Jika Anda memiliki Git yang diinisialisasi dalam proyek Anda, pastikan Anda melakukan semua perubahan terlebih dahulu sebelum Anda membuat aplikasi di Elastic Beanstalk. Mengapa? EB CLI menggunakan arsip Git dari komit terbaru.

eb create

Tekan Enter untuk menggunakan default untuk Nama Lingkungan , awalan DNS CNAME , dan jenis penyeimbang beban karena Anda hanya mengerjakan aplikasi HTML.

Tetapi ketika diminta untuk mengaktifkan permintaan Spot Fleet, ketik n , karena opsi ini menyediakan Instans Sesuai Permintaan opsional yang tidak diperlukan di sini, dan terakhir tekan Enter.

Grup penskalaan otomatis disediakan secara otomatis saat Anda pertama kali menjalankan eb create perintah.

Pemicu default ditingkatkan saat lalu lintas jaringan keluar rata-rata dari setiap instans lebih tinggi dari 6 MB dan turun saat lalu lintas jaringan keluar lebih rendah dari 2 MB selama periode lima menit.

Karena aplikasi Anda hanya HTML, pemicu penskalaan aplikasi tidak mungkin terjadi.

3. Terakhir, jalankan eb open perintah di bawah ini untuk membuka aplikasi Anda di browser web default Anda langsung dari Elastic Beanstalk.

eb open

Memverifikasi Aplikasi AWS Elastic Beanstalk

Sekarang Anda telah menerapkan aplikasi Anda, Anda akan melihat semua fungsi praktis ditambahkan ke aplikasi Anda. Pertama-tama Anda akan memverifikasi di mana Elastic Beanstalk menyimpan file aplikasi.

Untuk memiliki akses ke file aplikasi:

1. Masuk ke konsol AWS dengan pengguna yang ditambahkan dalam konfigurasi AWS CLI.

2. Klik Semua Layanan tarik-turun, klik Penyimpanan tab, lalu pilih S3 .

3. Di dasbor S3, klik proyek Anda untuk melihat informasi aplikasi Anda.

Seperti yang ditunjukkan di bawah ini, Anda melihat aplikasi Anda di Objek daftar.

4. Terakhir, klik tarik-turun Semua Layanan dan klik tab Hitung, lalu pilih EC2 untuk mengakses dasbor EC2 .

Di dasbor EC2, Anda dapat melihat sumber daya EC2 yang menjalankan aplikasi Anda, mirip dengan yang di bawah ini. Namun perlu diingat, data di bawah ini mungkin berbeda dengan data Anda.

Selain itu, Anda dapat menjalankan eb status perintah di bawah ini untuk melihat detail selengkapnya tentang aplikasi Anda.

eb status

Memperbarui Aplikasi AWS Elastic Beanstalk

Ketika perubahan telah dibuat di aplikasi Anda, Anda harus menjalankan eb deploy perintah untuk membuat dan menerapkan versi lain dari aplikasi Anda.

Buka file HTML Anda (index.html ) dan ganti apa yang Anda miliki di <style> tag dengan yang di bawah ini. Kode di bawah ini mengubah warna latar belakang aplikasi Anda .

<style>
    body{
        background-color: rgb(0, 255, 55);
    }
</style>

Sekarang, jalankan perintah berikut untuk deploy perubahan dan open aplikasi Anda di browser web Anda.

eb deploy
eb open

Saat penerapan selesai, aplikasi Anda akan terbuka secara otomatis di browser Anda dengan perubahan baru yang Anda buat.

Menyebarkan Aplikasi ke Elastic Beanstalk dengan Tindakan GitHub

Selain menggunakan EB CLI, menggunakan GitHub Actions adalah cara lain yang nyaman untuk menyebarkan wadah Docker Anda ke Elastic Beanstalk. GitHub Actions memungkinkan Anda untuk mengotomatiskan hal-hal yang berulang selama pengembangan. Dengan GitHub Actions, Anda menyiapkan instruksi dan mendorongnya ke GitHub.

Saat ini, ketika Anda membuat perubahan, Anda menjalankan sendiri perintah penerapan. Namun dalam demo ini, Anda akan menyiapkan Tindakan GitHub untuk menjalankan perintah penerapan untuk Anda.

Penyiapan ini bermanfaat jika Anda mengembangkan saluran yang menjalankan pengujian dan melakukan pemeriksaan lainnya.

1. Buat direktori bernama .github/workflows di direktori root proyek Anda. Direktori ini adalah tempat Anda menyimpan file alur kerja Anda.

2. Selanjutnya, buat file dengan nama pilihan Anda di direktori .github/workflows. Tapi untuk contoh ini, filenya bernama main.yml .

Salin dan tempel kode di bawah ini ke main.yml file, yang melakukan hal berikut:

  • Membuat pekerjaan yang mendapatkan push terbaru ke repositori Anda dan meng-zip repositori (Elastic Beanstalk mengharuskan Anda untuk meng-zip folder proyek Anda).
  • Memformat stempel waktu, dan menggunakan stempel waktu yang diformat sebagai label versi.
  • Terapkan repositori ke Elastic Beanstalk.
name: Deployment From Github To AWS
on:
  # activates the workflow when there is a push on the main branch
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest # the operating system your job will run on
    steps:
      - name: Checkout Latest Repo
        # checks out your repository under the GitHub workspace so that your workflow can access it
        uses: actions/[email protected]
        
      - name: Generate Deployment Package 
        # zip all files except .git
        run: zip -r deploy.zip * -x '*.git*'

      - name: Get timestamp
        uses: gerred/actions/[email protected]
        id: current-time
        
      - name: Run string replace
        uses: frabert/[email protected]
        id: format-time
        with:
          # replaces '[:\.]+' in the timestamp with '-'
          pattern: '[:\.]+'
          string: "${{ steps.current-time.outputs.time }}"
          replace-with: '-'
          flags: 'g'
          
      - name: Deploy to EB
        uses: einaregilsson/[email protected]
        with:
					# Input the credentials you used to setup AWS CLI and credentials for the application environment
          aws_access_key: AKIATI3RC11111YQ3TAU
          aws_secret_key: Urr46HfaaaaaabbbbbcccaC/+YpWFtJFbRQN27xF
          application_name: html
          environment_name: html-dev3
          version_label: "${{ steps.format-time.outputs.replaced }}"
          region: us-west-2
          deployment_package: deploy.zip

Biasanya, dalam proyek langsung, Anda ingin meletakkan kredensial di Rahasia GitHub.

3. Jalankan perintah berikut pada root proyek Anda untuk melakukan dan mendorong kode ke repositori GitHub Anda.

git add . # adds changes to staging area
git commit -m "update" # commits your changes
git push # Push to GitHub

4. Sekarang, buka browser web Anda dan navigasikan ke proyek Anda di GitHub. Klik pada Tindakan tab, lalu klik komit Anda saat ini.

Mirip dengan gambar di bawah, Anda dapat mengonfirmasi bahwa aplikasi Anda telah diterapkan.

5. Terakhir, jalankan perintah di bawah ini untuk menjalankan aplikasi Anda.

eb open

Di bawah, Anda dapat melihat bahwa GitHub Actions berhasil menerapkan perubahan.

Kesimpulan

Sepanjang tutorial ini, Anda telah mempelajari cara men-deploy aplikasi ke Elastic Beanstalk melalui terminal dengan EB CLI dan GitHub Actions.

Sekarang, Anda sudah mengetahui berbagai cara untuk menerapkan aplikasi Anda ke pohon kacang Elastis, sehingga Anda dapat memilih mana yang paling sesuai dengan kebutuhan Anda.

Bagaimana Anda berencana untuk membangun pengetahuan yang baru ditemukan ini? Mungkin menerapkan aplikasi lengkap?


Docker
  1. Cara menginstal Docker dan menyebarkan LAMP Stack

  2. Cara Menetapkan IP Statis ke Wadah Docker

  3. Cara Menyebarkan PostgreSQL sebagai Wadah Docker

  1. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  2. Cara Mendaftar Kontainer Docker

  3. Cara Keluar dari Kontainer Docker

  1. Cara Menjalankan MySQL Dalam Wadah Docker

  2. Cara SSH Ke Wadah Docker

  3. Cara Menginstal Vim di Wadah Docker