GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nasadit Docker Container na AWS Elastic Beanstalk

Potřebujete automatizovat nasazení kontejneru Docker? Už jste slyšeli o AWS Elastic Beanstalk? AWS Elastic Beanstalk je další vynikající službou pro nasazení a škálování webových aplikací a služeb.

V tomto tutoriálu se dozvíte, jak nasadit aplikaci do AWS Elastic Beanstalk pomocí EB CLI a GitHub Actions.

připraveni? Čtěte dále a začněte škálovat své aplikace!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující:

  • Rozhraní příkazového řádku AWS (CLI) – Tento výukový program používá rozhraní AWS CLI v2.
  • Uživatel AWS s oprávněním Elastic Beanstalk.
  • EB CLI v3.14.6 nainstalováno
  • Účet GitHub a úložiště GitHub, které je již nastaveno.

Vytvoření statického webového hostitele Docker

Chcete-li předvést, jak nasadit kontejner Docker, budete nejprve potřebovat aplikaci k nasazení. A pro tuto ukázku použijete soubor HTML.

1. Spusťte git clone příkaz níže ke klonování souboru HTML z úložiště GitHub.

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

2. Dále vytvořte Dockerfile pomocí preferovaného textového editoru v kořenovém adresáři úložiště, které jste naklonovali (krok jedna), a naplňte soubor níže uvedeným kódem.

Níže uvedený kód zobrazuje výstup kódu 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. Spusťte docker build příkaz níže k vytvoření kontejneru Docker vašeho souboru HTML s názvem html v pracovním adresáři.

docker build -t html .

4. Nyní spusťte docker run příkaz níže ke spuštění kontejneru Docker (html ), kterou jste postavili dříve (krok tři).

--name příznak říká Dockerovi jméno (justhtml ) použít při odkazování na kontejner v rámci sítě. Zatímco -p flag mapuje port vašeho localhost (8080 ) do portu kontejneru Docker (80 ).

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

5. Nakonec otevřete webový prohlížeč a přejděte na http://localhost:8080/, abyste ověřili, že máte přístup ke kontejneru Docker (HTML).

Pokud vše funguje dobře, zobrazí se níže zobrazená stránka HTML.

Nasazení aplikace na Elastic Beanstalk prostřednictvím rozhraní AWS CLI

Ověřili jste, že váš kontejner Docker je přístupný na vašem hostiteli, takže je čas nasadit vaši aplikaci do AWS Elastic Beanstalk. K nasazení vašeho kontejneru Docker (html) do AWS Elastic Beanstalk použijete EB CLI.

Za předpokladu, že již máte AWS CLI nastavené, nemusíte pro nastavení EB CLI nic dělat. Proč? EB CLI používá stejné přihlašovací údaje jako AWS CLI.

1. Spusťte eb init příkaz níže pro inicializaci prostředí Elastic Beanstalk pro váš projekt. Prostředí umožňuje Elastic Beanstalk identifikovat druh aplikace, kterou chcete nasadit.

eb init

Po spuštění příkazu se zobrazí výzva k vyplnění údajů. Níže jsou pro tento příklad použity následující možnosti.

  • Výchozí oblast: 3
  • Název aplikace: html
  • Zdá se, že používáte Docker. Je to správné? Y
  • Vyberte větev platformy: 1
  • Přejete si pokračovat s CodeCommit? N
  • Chcete pro své instance nastavit SSH? N

2. Dále spusťte eb create příkaz níže k vytvoření prostředí pro vaši aplikaci na Elastic Beanstalk. V podstatě nasadíte svou aplikaci a Elastic Beanstalk se postará o zbytek, jako je vyrovnávání zátěže

Pokud jste ve svém projektu inicializovali Git, ujistěte se, že jste nejprve provedli všechny změny, než vytvoříte aplikaci na Elastic Beanstalk. Proč? EB CLI používá archiv Git s nejnovějším potvrzením.

eb create

Stisknutím klávesy Enter použijete výchozí nastavení pro Název prostředí , Předpona DNS CNAME a typ nástroje pro vyrovnávání zatížení protože pracujete pouze na aplikaci HTML.

Ale když budete vyzváni k povolení požadavků Spot Fleet, zadejte n , protože tato možnost poskytuje volitelné instance na vyžádání, které zde nejsou nutné, a nakonec stiskněte Enter.

Při prvním spuštění eb create se automaticky zřídí skupina automatického škálování příkaz.

Výchozí spouštěče se zvětší, když je průměrný odchozí síťový provoz z každé instance vyšší než 6 MB, a sníží se, když je odchozí síťový provoz nižší než 2 MB po dobu pěti minut.

Vzhledem k tomu, že vaše aplikace je pouze HTML, ke spuštění škálování aplikace pravděpodobně nedojde.

3. Nakonec spusťte eb open příkazem níže otevřete aplikaci ve výchozím webovém prohlížeči přímo z Elastic Beanstalk.

eb open

Ověření aplikace AWS Elastic Beanstalk

Nyní, když jste nasadili svou aplikaci, uvidíte všechny užitečné funkce přidané do vaší aplikace. Nejprve ověříte, kam Elastic Beanstalk uložil soubor aplikace.

Chcete-li získat přístup k souboru aplikace:

1. Přihlaste se do konzoly AWS s uživatelem přidaným v konfiguraci AWS CLI.

2. Klikněte na Vše Služby v rozbalovací nabídce klikněte na Úložiště a poté vyberte S3 .

3. Na řídicím panelu S3 klikněte na svůj projekt a zobrazte informace o své aplikaci.

Jak je uvedeno níže, svou aplikaci vidíte v Objektech seznam.

4. Nakonec klikněte na rozbalovací nabídku Všechny služby a klikněte na kartu Compute (Vypočítat) a poté vyberte EC2 pro přístup k řídicímu panelu EC2 .

Na řídicím panelu EC2 můžete vidět prostředky EC2, které spouštějí vaši aplikaci, podobné tomu níže. Ale pozor, níže uvedená data se mohou lišit od vašich.

Navíc můžete spustit eb status příkazem níže zobrazíte další podrobnosti o své aplikaci.

eb status

Aktualizace aplikace AWS Elastic Beanstalk

Po provedení změn ve vaší aplikaci budete muset spustit eb deploy příkaz k vytvoření a nasazení další verze vaší aplikace.

Otevřete svůj soubor HTML (index.html ) a nahraďte to, co máte v <style> označte níže uvedeným. Níže uvedený kód změní barvu pozadí vaší aplikace.

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

Nyní spusťte následující příkazy k deploy změny a open vaší aplikaci ve webovém prohlížeči.

eb deploy
eb open

Po dokončení nasazení se vaše aplikace automaticky otevře ve vašem prohlížeči s novými změnami, které jste provedli.

Nasazení aplikace na elastický Beanstalk pomocí akcí GitHubu

Kromě použití EB CLI je použití GitHub Actions dalším pohodlným způsobem nasazení vašeho kontejneru Docker do Elastic Beanstalk. Akce GitHub vám umožňují automatizovat opakující se věci během vývoje. Pomocí Akce GitHubu nastavíte pokyny a odešlete je na GitHub.

V okamžiku, kdy provedete změny, spustíte příkaz nasazení sami. V této ukázce však nastavíte akce GitHub, aby za vás spouštěly příkazy nasazení.

Toto nastavení je výhodné, pokud vyvíjíte kanál, který spouští testy a provádí další kontroly.

1. Vytvořte adresář s názvem .github/workflows v kořenovém adresáři vašeho projektu. Tento adresář je místo, kam uložíte soubor pracovního postupu.

2. Dále vytvořte soubor s preferovaným názvem v adresáři .github/workflows. Ale pro tento příklad se soubor jmenuje main.yml .

Zkopírujte a vložte níže uvedený kód do main.yml soubor, který provede následující:

  • Vytvoří úlohu, která dostane nejnovější push do vašeho úložiště a zazipuje úložiště (Elastic Beanstalk vyžaduje, abyste zazipovali složku projektu).
  • Formátuje časové razítko a používá formátované časové razítko jako označení verze.
  • Nasaďte úložiště do 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

V živém projektu byste obvykle chtěli vložit přihlašovací údaje do GitHub Secrets.

3. Spuštěním následujících příkazů v kořenovém adresáři projektu potvrďte a odešlete kód do svého úložiště GitHub.

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

4. Nyní otevřete webový prohlížeč a přejděte do svého projektu na GitHubu. Klikněte na Akce a poté klikněte na své aktuální potvrzení.

Podobně jako na obrázku níže můžete potvrdit, že je vaše aplikace nasazena.

5. Nakonec spusťte níže uvedený příkaz pro spuštění aplikace.

eb open

Níže můžete vidět, že akce GitHub úspěšně implementovaly změny.

Závěr

V tomto tutoriálu jste se naučili, jak nasadit aplikaci do Elastic Beanstalk prostřednictvím terminálu s EB CLI a GitHub Actions.

Nyní již znáte různé způsoby nasazení aplikace do Elastic beanstalk, takže si můžete vybrat, který z nich nejvíce vyhovuje vašim potřebám.

Jak plánujete stavět na těchto nově nabytých znalostech? Možná nasazení plnohodnotné aplikace?


Docker
  1. Jak nasadit kontejner nginx s Dockerem na Linode

  2. Jak nainstalovat Docker a nasadit LAMP Stack

  3. Jak spustit MySQL v kontejneru Docker

  1. Jak SSH do kontejneru Docker

  2. Jak přiřadit statickou IP ke kontejneru Docker

  3. Jak nainstalovat Vim do kontejneru Docker

  1. Jak nasadit PostgreSQL jako Docker Container

  2. Jak vypsat Docker kontejnery

  3. Jak opustit kontejner Docker