update GitHub Actions workflow to use actions/checkout@v4 and improve container management

This commit is contained in:
2025-02-10 16:05:50 +01:00
parent 65cbab94c7
commit e1cd000442

View File

@@ -13,7 +13,7 @@ jobs:
steps: steps:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Set Environment Variables - name: Set Environment Variables
run: | run: |
@@ -39,28 +39,31 @@ jobs:
IMAGE_NAME="my-nextjs-app:$DEPLOY_ENV" IMAGE_NAME="my-nextjs-app:$DEPLOY_ENV"
NEW_CONTAINER_NAME="$CONTAINER_NAME-new" NEW_CONTAINER_NAME="$CONTAINER_NAME-new"
# Prüft, ob der alte Container existiert und entfernt ihn # Entferne vorhandenen temporären Container, falls vorhanden
if [ $(docker ps -aq -f name=$NEW_CONTAINER_NAME) ]; then if [ "$(docker ps -aq -f name=$NEW_CONTAINER_NAME)" ]; then
echo "Removing existing new container ($NEW_CONTAINER_NAME)..." echo "Removing existing new container ($NEW_CONTAINER_NAME)..."
docker rm -f "$NEW_CONTAINER_NAME" || true docker rm -f "$NEW_CONTAINER_NAME" || true
fi fi
# Führt den neuen Container auf einem temporären internen Port aus # Starte den neuen Container auf einem temporären internen Port
docker run -d --name "$NEW_CONTAINER_NAME" -p 40000:3000 $IMAGE_NAME docker run -d --name "$NEW_CONTAINER_NAME" -p 40000:3000 $IMAGE_NAME
# Warten, um sicherzustellen, dass der neue Container läuft # Warte, um sicherzustellen, dass der neue Container läuft
sleep 10 sleep 10
# Prüfen, ob der neue Container erfolgreich läuft # Prüfe, ob der neue Container erfolgreich läuft
if [ $(docker inspect --format='{{.State.Running}}' $NEW_CONTAINER_NAME) == "true" ]; then if [ "$(docker inspect --format='{{.State.Running}}' $NEW_CONTAINER_NAME)" == "true" ]; then
# Stoppt und entfernt den alten Container, falls vorhanden # Stoppe und entferne den alten Container, falls vorhanden
if [ $(docker ps -aq -f name=$CONTAINER_NAME) ]; then if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
docker stop "$CONTAINER_NAME" || true docker stop "$CONTAINER_NAME" || true
docker rm "$CONTAINER_NAME" || true docker rm "$CONTAINER_NAME" || true
fi fi
# Benennt den neuen Container zum alten Namen um und weist den gewünschten Port zu # Stoppe und entferne den temporären Container
docker rename "$NEW_CONTAINER_NAME" "$CONTAINER_NAME" docker stop "$NEW_CONTAINER_NAME" || true
docker rm "$NEW_CONTAINER_NAME" || true
# Starte den Container mit dem gewünschten Namen und Port
docker run -d --name "$CONTAINER_NAME" -p $PORT:3000 $IMAGE_NAME docker run -d --name "$CONTAINER_NAME" -p $PORT:3000 $IMAGE_NAME
else else
echo "New container failed to start." echo "New container failed to start."