Preparation
Local Machine (here MacBook Pro)
macOS
Visual Studio Code
(indegrated development environment)
GitHub
(collaboration & code deployment)
AWS CLI
(command line interface for Amazon Web Services)
Production Environment (here AWS EC2)
AWS EC2 – Windows Server
AWS-Berechtigungen konfigurieren
(um auf Ihre EC2-Instanz zugreifen zu können)
Python
Visual Studio Code
Git
GitHub
Docker
Set Up Local Repository
Neues Git-Repository initialisieren:
- open Visual Studio Code (VS Code)
- open a project folder in VS Code and name it with [project_name]
- create .gitignore-file
–> add files to be ignored
–> save file - click „Terminal“
–> click „New Terminal“
(open integrated Terminal in VS Code) - type „git init“
(initialize new local repository)
Dateien zum Repository hinzufügen und ersten Commit machen:
- type „git add .“
(add all files to staging area) - type „git commit -m „initial commit““
(create first commit)
- type „git add .“
Set Up and Connect Remote-Repository
Remote-Repository (auf einer Plattform wie GitHub, GitLab oder Bitbucket) erstellen
- Gehen Sie zurück zu github.com und melden Sie sich mit Ihrem Benutzernamen und Passwort an
(Einloggen bei GitHub) - Klicken Sie nach dem Login in der oberen rechten Ecke auf das „+“-Symbol und wählen Sie „New repository“
(Neues Repository erstellen) - type [project_name] as repository name
(Inhalt oder Zweck des Repositorys)
type description
(erklären, worum es in Ihrem Repository geht) - choose „public“ or „private“ repository
- Initialize this repository with
(README-Datei,
.gitignore-Datei,
Lizenz)
Lokales Repository mit dem GitHub-Repository verbinden
- type „git remote add origin https://github.com/[user_name]/[repository_name].git“
(URL of remote repository)
(add remote repository) - type „git push -u origin main“
(push to remote repository)
Containerize Application
Dockerfile erstellen
# Verwenden Sie ein offizielles Python-Laufzeit-Image als Eltern-Image
FROM [python_version; e.g. „python:3.8-slim“]
# Setzen Sie das Arbeitsverzeichnis im Container
WORKDIR /[project_folder_name]
# Kopieren Sie die benötigten Dateien in das Arbeitsverzeichnis
COPY requirements.txt ./
COPY [main_script_name; e.g. „main.py“] ./
# Installieren Sie alle benötigten Pakete aus der requirements.txt
RUN pip install –no-cache-dir -r requirements.txt
# Startbefehl für den Container
CMD [„python“, „./[main_script_name; e.g. „main.py“]“]
COPY
kopiert Dateien von Ihrem lokalen System in den Container.
RUN
führt Befehle aus, hier zum Installieren von Python-Paketen.
CMD
gibt den Befehl an, der beim Start des Containers ausgeführt wird.
Dockerfile testen
Docker-Image erstellen
- type „docker build -t [mein-image-name]“
Erstelltes DockerImage überprüfen
- type „docker images“
Docker-image ausführen
- type „docker run -p 4000:80 [mein-image-name]“
Set Up Container Registry
- AWS Berechtigungen konfigurieren
- Container Registry einrichten
Create a new repository in AWS Elastic Container Registry (ECR) and name it [repository-name]
Authenticate Docker to your ECR
- type „aws ecr get-login-password –region <your-region> | docker login –username AWS –password-stdin <your-account-id>.dkr.ecr.<your-region>.amazonaws.com“
- Build, Push and Check Docker Image
Build the Docker image
- type „docker build -t python-app .“
Tag the Docker image for ECR
- type „docker tag python-app:latest <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/python-app:latest“
Push the Docker image to ECR
- type „docker push <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/python-app:latest“
Check the Docker-Image in AWS ECR
- Open AWS Management Console
–> login - Navigate toAmazon ECR
–> type „ECR“ into search bar
–> choose „Elastic Container Registry“. - check repository
–> assure there is a repository and image
Set Up Production Environment
- EC2 für Deployment vorbereiten
(EC2-Instanz für den Empfang der Updates konfigurieren)- SSH-Zugriff und erforderliche Berechtigungen der EC2-Instanz sicherstellen
(um Dateien zu empfangen und auszuführen)
- SSH-Zugriff und erforderliche Berechtigungen der EC2-Instanz sicherstellen
- Connect to EC2 Instance
- Open terminal on local machine
- Connect with EC2 instance through SSH
type „ssh -i ~/.ssh/ec2-key Administrator@your-ec2-instance-public-dns
„
- Download and Execute Docker-Image from ECR
- open AWS EC2
- Connect to AWS ECR
type „aws ecr get-login-password --region your-region | docker login --username AWS --password-stdin your-account-id.dkr.ecr.your-region.amazonaws.com
„ - Download Docker-Image from ECR
type „docker pull your-account-id.dkr.ecr.your-region.amazonaws.com/python-animal_facts_deployed:latest
„ - Start Docker-Container
type „docker run -d -p 80:80 --name python-animal_facts_deployed your-account-id.dkr.ecr.your-region.amazonaws.com/python-animal_facts_deployed:latest"
Set Up CI/CD-Pipeline
CI/CD-Tool auswählen (z.B. GitHub Actions (für GitHub), GitLab CI/CD (für GitLab) oder Jenkins)
- open GitHub repository
–> click „Actions“ - click „New workflow“
–> choose „vorgefertigtes Workflow-Template“ or create „eigenen Workflow“
CI/CD-Pipeline konfigurieren/Deployment-Skript schreiben
- Erstellen Sie eine Konfigurationsdatei „.github/workflows/deploy.yml“ (alternativ im Format .json) im Verzeichnis Ihres Repositories.
- Schritte des Workflows definieren, z.B.:
- Quellcode aus Repository prüfen
- Auschecken des Repositorys:
actions/checkout@v2
. - Python-Umgebung einrichten:
actions/setup-python@v2
. - Python-Abhängigkeiten installieren:
pip install -r requirements.txt
. - Bei AWS ECR anmelden
- Docker-Image bauen und zu AWS ECR pushen
- (Optional) Ausführen von Tests.
- SSH-Agenten einrichten
- Über SSH mit AWS EC2 verbinden
- Code zu AWS EC2 deployen (siehe nächster Schritt).