Bereinige und vereinfache Installations-Skripte
- Entferne alle überflüssigen Installations- und Konfigurationsskripte - Erstelle zwei vereinfachte Docker-Installationsskripte: - install-frontend.sh für Frontend-Installation - install-backend.sh für Backend-Installation - Verbessere Frontend Dockerfile mit besserer Unterstützung für native Dependencies - Aktualisiere Backend Dockerfile für automatische DB-Initialisierung - Korrigiere TypeScript-Fehler in personalized-cards.tsx - Erstelle env.ts für Umgebungsvariablen-Verwaltung - Füge ausführliche Installationsanleitung in INSTALL.md hinzu - Konfiguriere Docker-Compose für Host-Netzwerkmodus - Erweitere Dockerfiles mit Healthchecks für bessere Zuverlässigkeit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -1,31 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define image name
|
||||
MYP_RP_IMAGE_NAME="myp-rp"
|
||||
|
||||
# Function to build Docker image
|
||||
build_image() {
|
||||
local image_name=$1
|
||||
local dockerfile=$2
|
||||
local platform=$3
|
||||
|
||||
echo "Building $image_name Docker image for $platform..."
|
||||
|
||||
docker buildx build --platform $platform -t ${image_name}:latest -f $dockerfile --load .
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$image_name Docker image built successfully"
|
||||
else
|
||||
echo "Error occurred while building $image_name Docker image"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Create and use a builder instance (if not already created)
|
||||
BUILDER_NAME="myp-rp-arm64-builder"
|
||||
docker buildx create --name $BUILDER_NAME --use || docker buildx use $BUILDER_NAME
|
||||
|
||||
# Build myp-rp image
|
||||
build_image "$MYP_RP_IMAGE_NAME" "$PWD/Dockerfile" "linux/arm64"
|
||||
|
||||
# Remove the builder instance
|
||||
docker buildx rm $BUILDER_NAME
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
debug
|
||||
}
|
||||
|
||||
m040tbaraspi001.de040.corpintra.net, m040tbaraspi001.de040.corpinter.net, localhost {
|
||||
reverse_proxy myp-rp:3000
|
||||
tls internal
|
||||
}
|
@ -1 +0,0 @@
|
||||
{"apps":{"http":{"servers":{"srv0":{"listen":[":443"],"routes":[{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"myp-rp:3000"}]}]}]}],"match":[{"host":["m040tbaraspi001.de040.corpintra.net","m040tbaraspi001.de040.corpinter.net","localhost"]}],"terminal":true}]}}},"tls":{"automation":{"policies":[{"issuers":[{"module":"internal"}],"subjects":["localhost","m040tbaraspi001.de040.corpinter.net","m040tbaraspi001.de040.corpintra.net"]}]}}},"logging":{"logs":{"default":{"level":"DEBUG"}}}}
|
@ -1,24 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBvTCCAWSgAwIBAgIRAPU9l/UbzcL7IMHIB3R4jREwCgYIKoZIzj0EAwIwMzEx
|
||||
MC8GA1UEAxMoQ2FkZHkgTG9jYWwgQXV0aG9yaXR5IC0gRUNDIEludGVybWVkaWF0
|
||||
ZTAeFw0yNTAzMjYxMjQ4NDRaFw0yNTAzMjcwMDQ4NDRaMAAwWTATBgcqhkjOPQIB
|
||||
BggqhkjOPQMBBwNCAAS6t64LWdLKVIEIlg/9X+ob/4evs4EGUxK8TrBqQcjpJvxr
|
||||
JjPK9YpPa1Dmuko2JFo4hB2zgSf4esb9Ew2eiGzzo4GLMIGIMA4GA1UdDwEB/wQE
|
||||
AwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFDpn
|
||||
k4oFx8oHjltlaD8RBYv7JoJIMB8GA1UdIwQYMBaAFNtT2XbJADGNGXiDvCHh7UGq
|
||||
nU0UMBcGA1UdEQEB/wQNMAuCCWxvY2FsaG9zdDAKBggqhkjOPQQDAgNHADBEAiB4
|
||||
UFAFZMQLnMjmmOAfWQeJU7QQN7Wn0BaD4LAON8KdewIgCUOQA0sqsxnKDijW3hds
|
||||
p94i7WbY6PwRLuI7HpMA6YM=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBxzCCAW2gAwIBAgIQBxtri0u0IUbQucD648jSujAKBggqhkjOPQQDAjAwMS4w
|
||||
LAYDVQQDEyVDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSAyMDI1IEVDQyBSb290MB4X
|
||||
DTI1MDMyNjEyNDIzOFoXDTI1MDQwMjEyNDIzOFowMzExMC8GA1UEAxMoQ2FkZHkg
|
||||
TG9jYWwgQXV0aG9yaXR5IC0gRUNDIEludGVybWVkaWF0ZTBZMBMGByqGSM49AgEG
|
||||
CCqGSM49AwEHA0IABABjG5Mz+vTRqVKwIduy5DU7JV/RqAYhca7lJ0Mvm07qaDzE
|
||||
fCJrJ9NfwoH6DWO5nKvEG1GrqUjoZGeAZKV6i0mjZjBkMA4GA1UdDwEB/wQEAwIB
|
||||
BjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTbU9l2yQAxjRl4g7wh4e1B
|
||||
qp1NFDAfBgNVHSMEGDAWgBQj0TqTz+i+mgniWIorz1LMFKeXPDAKBggqhkjOPQQD
|
||||
AgNIADBFAiEA5beidpDU9mWSjsa55zdyuLI1UK/Fj6DxIuv5WtDnnb4CIFU1saeM
|
||||
dQ8SoCntwSJJhWhwglyhhKN9hxQfnZ0E9MDF
|
||||
-----END CERTIFICATE-----
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"sans": [
|
||||
"localhost"
|
||||
],
|
||||
"issuer_data": null
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEICa958r36l062opbnc8sNTtdpMo+sBFkl3NjXYBEA+1ooAoGCCqGSM49
|
||||
AwEHoUQDQgAEureuC1nSylSBCJYP/V/qG/+Hr7OBBlMSvE6wakHI6Sb8ayYzyvWK
|
||||
T2tQ5rpKNiRaOIQds4En+HrG/RMNnohs8w==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1,24 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB2DCCAX6gAwIBAgIRAPVXFTo6d7jESLMLxMZKplgwCgYIKoZIzj0EAwIwMzEx
|
||||
MC8GA1UEAxMoQ2FkZHkgTG9jYWwgQXV0aG9yaXR5IC0gRUNDIEludGVybWVkaWF0
|
||||
ZTAeFw0yNTAzMjYxMjQyMzhaFw0yNTAzMjcwMDQyMzhaMAAwWTATBgcqhkjOPQIB
|
||||
BggqhkjOPQMBBwNCAARx/pRcXBw+x3+m3SQSaYXPGV+NCBq1zgeMcC6G/xTTpDny
|
||||
w8OTejy817yfEKex8B2FuwRvC+mH2Bd9BPvnRakHo4GlMIGiMA4GA1UdDwEB/wQE
|
||||
AwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFMBP
|
||||
yCSwbLaKF/HYd4RLcMPKM/HPMB8GA1UdIwQYMBaAFNtT2XbJADGNGXiDvCHh7UGq
|
||||
nU0UMDEGA1UdEQEB/wQnMCWCI20wNDB0YmFyYXNwaTAwMS5kZTA0MC5jb3JwaW50
|
||||
ZXIubmV0MAoGCCqGSM49BAMCA0gAMEUCIQCO+fh6TpZDHg3b44SmtspcmIfc2jkd
|
||||
CMdWW32ByhRffAIgDxUBsifWaNgUMHhFpVEGm4K0XEvBR8iAHrGkMluEQ54=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBxzCCAW2gAwIBAgIQBxtri0u0IUbQucD648jSujAKBggqhkjOPQQDAjAwMS4w
|
||||
LAYDVQQDEyVDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSAyMDI1IEVDQyBSb290MB4X
|
||||
DTI1MDMyNjEyNDIzOFoXDTI1MDQwMjEyNDIzOFowMzExMC8GA1UEAxMoQ2FkZHkg
|
||||
TG9jYWwgQXV0aG9yaXR5IC0gRUNDIEludGVybWVkaWF0ZTBZMBMGByqGSM49AgEG
|
||||
CCqGSM49AwEHA0IABABjG5Mz+vTRqVKwIduy5DU7JV/RqAYhca7lJ0Mvm07qaDzE
|
||||
fCJrJ9NfwoH6DWO5nKvEG1GrqUjoZGeAZKV6i0mjZjBkMA4GA1UdDwEB/wQEAwIB
|
||||
BjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTbU9l2yQAxjRl4g7wh4e1B
|
||||
qp1NFDAfBgNVHSMEGDAWgBQj0TqTz+i+mgniWIorz1LMFKeXPDAKBggqhkjOPQQD
|
||||
AgNIADBFAiEA5beidpDU9mWSjsa55zdyuLI1UK/Fj6DxIuv5WtDnnb4CIFU1saeM
|
||||
dQ8SoCntwSJJhWhwglyhhKN9hxQfnZ0E9MDF
|
||||
-----END CERTIFICATE-----
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"sans": [
|
||||
"m040tbaraspi001.de040.corpinter.net"
|
||||
],
|
||||
"issuer_data": null
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIKKTHxhW36UGnXNu76awScVKin+p/jOIQgk8PiMzJBEpoAoGCCqGSM49
|
||||
AwEHoUQDQgAEcf6UXFwcPsd/pt0kEmmFzxlfjQgatc4HjHAuhv8U06Q58sPDk3o8
|
||||
vNe8nxCnsfAdhbsEbwvph9gXfQT750WpBw==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1,24 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB2DCCAX2gAwIBAgIQWtKcUuqi4m7Il54RGR2BezAKBggqhkjOPQQDAjAzMTEw
|
||||
LwYDVQQDEyhDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSBFQ0MgSW50ZXJtZWRpYXRl
|
||||
MB4XDTI1MDMyNjEyNDIzOFoXDTI1MDMyNzAwNDIzOFowADBZMBMGByqGSM49AgEG
|
||||
CCqGSM49AwEHA0IABDe6dkJkIlyLsbuphvIifPbRI1k42pG0Ec3NqDsdi1MfFCFS
|
||||
OBCj7oOIEtSUfYcV5AVeerBW1I6s+t8cMvAhYMSjgaUwgaIwDgYDVR0PAQH/BAQD
|
||||
AgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUOmn0
|
||||
iGuTKiGBlFFThWjQTsg3sA4wHwYDVR0jBBgwFoAU21PZdskAMY0ZeIO8IeHtQaqd
|
||||
TRQwMQYDVR0RAQH/BCcwJYIjbTA0MHRiYXJhc3BpMDAxLmRlMDQwLmNvcnBpbnRy
|
||||
YS5uZXQwCgYIKoZIzj0EAwIDSQAwRgIhANZAovSh7bSGW39f1K9E5COVm6YbWGdU
|
||||
tTw9zoUf34ahAiEAjPuVRxKE6cb57SYmHFXiMn+LfN9Dbxr/jVaFIWbRiUo=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBxzCCAW2gAwIBAgIQBxtri0u0IUbQucD648jSujAKBggqhkjOPQQDAjAwMS4w
|
||||
LAYDVQQDEyVDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSAyMDI1IEVDQyBSb290MB4X
|
||||
DTI1MDMyNjEyNDIzOFoXDTI1MDQwMjEyNDIzOFowMzExMC8GA1UEAxMoQ2FkZHkg
|
||||
TG9jYWwgQXV0aG9yaXR5IC0gRUNDIEludGVybWVkaWF0ZTBZMBMGByqGSM49AgEG
|
||||
CCqGSM49AwEHA0IABABjG5Mz+vTRqVKwIduy5DU7JV/RqAYhca7lJ0Mvm07qaDzE
|
||||
fCJrJ9NfwoH6DWO5nKvEG1GrqUjoZGeAZKV6i0mjZjBkMA4GA1UdDwEB/wQEAwIB
|
||||
BjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTbU9l2yQAxjRl4g7wh4e1B
|
||||
qp1NFDAfBgNVHSMEGDAWgBQj0TqTz+i+mgniWIorz1LMFKeXPDAKBggqhkjOPQQD
|
||||
AgNIADBFAiEA5beidpDU9mWSjsa55zdyuLI1UK/Fj6DxIuv5WtDnnb4CIFU1saeM
|
||||
dQ8SoCntwSJJhWhwglyhhKN9hxQfnZ0E9MDF
|
||||
-----END CERTIFICATE-----
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"sans": [
|
||||
"m040tbaraspi001.de040.corpintra.net"
|
||||
],
|
||||
"issuer_data": null
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIA3vXldJ16IzTZetwcSYa08RyRxst+Lpjm9TKt7yYU6+oAoGCCqGSM49
|
||||
AwEHoUQDQgAEN7p2QmQiXIuxu6mG8iJ89tEjWTjakbQRzc2oOx2LUx8UIVI4EKPu
|
||||
g4gS1JR9hxXkBV56sFbUjqz63xwy8CFgxA==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
e9f99540-c0cf-4046-a79f-148307ff52a5
|
@ -1 +0,0 @@
|
||||
{"tls":{"timestamp":"2025-03-26T12:42:38.600855506Z","instance_id":"e9f99540-c0cf-4046-a79f-148307ff52a5"}}
|
@ -1,12 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBxzCCAW2gAwIBAgIQBxtri0u0IUbQucD648jSujAKBggqhkjOPQQDAjAwMS4w
|
||||
LAYDVQQDEyVDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSAyMDI1IEVDQyBSb290MB4X
|
||||
DTI1MDMyNjEyNDIzOFoXDTI1MDQwMjEyNDIzOFowMzExMC8GA1UEAxMoQ2FkZHkg
|
||||
TG9jYWwgQXV0aG9yaXR5IC0gRUNDIEludGVybWVkaWF0ZTBZMBMGByqGSM49AgEG
|
||||
CCqGSM49AwEHA0IABABjG5Mz+vTRqVKwIduy5DU7JV/RqAYhca7lJ0Mvm07qaDzE
|
||||
fCJrJ9NfwoH6DWO5nKvEG1GrqUjoZGeAZKV6i0mjZjBkMA4GA1UdDwEB/wQEAwIB
|
||||
BjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTbU9l2yQAxjRl4g7wh4e1B
|
||||
qp1NFDAfBgNVHSMEGDAWgBQj0TqTz+i+mgniWIorz1LMFKeXPDAKBggqhkjOPQQD
|
||||
AgNIADBFAiEA5beidpDU9mWSjsa55zdyuLI1UK/Fj6DxIuv5WtDnnb4CIFU1saeM
|
||||
dQ8SoCntwSJJhWhwglyhhKN9hxQfnZ0E9MDF
|
||||
-----END CERTIFICATE-----
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIDwz5wb9hKt0oBQLfNfh4udQdbomFlQwANjEbLFlAWoLoAoGCCqGSM49
|
||||
AwEHoUQDQgAEAGMbkzP69NGpUrAh27LkNTslX9GoBiFxruUnQy+bTupoPMR8Imsn
|
||||
01/CgfoNY7mcq8QbUaupSOhkZ4BkpXqLSQ==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1,11 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBpDCCAUqgAwIBAgIRANtNnPgy0RsYy8s8jEXTF70wCgYIKoZIzj0EAwIwMDEu
|
||||
MCwGA1UEAxMlQ2FkZHkgTG9jYWwgQXV0aG9yaXR5IC0gMjAyNSBFQ0MgUm9vdDAe
|
||||
Fw0yNTAzMjYxMjQyMzhaFw0zNTAyMDIxMjQyMzhaMDAxLjAsBgNVBAMTJUNhZGR5
|
||||
IExvY2FsIEF1dGhvcml0eSAtIDIwMjUgRUNDIFJvb3QwWTATBgcqhkjOPQIBBggq
|
||||
hkjOPQMBBwNCAARwisVH8Fpc6IyEsTJ52Ie+G57YAaG946BWcg12RVz+0K2PAk8k
|
||||
S2zQ7F0Q9ACgmIi714mTDwRYqPI98YgUSH3vo0UwQzAOBgNVHQ8BAf8EBAMCAQYw
|
||||
EgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQUI9E6k8/ovpoJ4liKK89SzBSn
|
||||
lzwwCgYIKoZIzj0EAwIDSAAwRQIhAPNALa1ZYm+zv0M+lgka9i/lEtv1nXECXkB3
|
||||
LDSxq3uOAiBLTXBuZZEGmv1eIOSUCFUdAqf+T2xTK7tWorwSyzh/EQ==
|
||||
-----END CERTIFICATE-----
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIEFRxdeKjH1vPMMq+p5SBmN+5OFBuWwHyDXvvmEKOIatoAoGCCqGSM49
|
||||
AwEHoUQDQgAEcIrFR/BaXOiMhLEyediHvhue2AGhveOgVnINdkVc/tCtjwJPJEts
|
||||
0OxdEPQAoJiIu9eJkw8EWKjyPfGIFEh97w==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1,19 +0,0 @@
|
||||
services:
|
||||
caddy:
|
||||
image: caddy:2.8
|
||||
container_name: caddy
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
volumes:
|
||||
- ./caddy/data:/data
|
||||
- ./caddy/config:/config
|
||||
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
myp-rp:
|
||||
image: myp-rp:latest
|
||||
container_name: myp-rp
|
||||
env_file: "/srv/myp-env/github.env"
|
||||
volumes:
|
||||
- /srv/MYP-DB:/usr/src/app/db
|
||||
restart: unless-stopped
|
@ -1,36 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Directory containing the Docker images
|
||||
IMAGE_DIR="docker/images"
|
||||
|
||||
# Load all Docker images from the tar.xz files in the IMAGE_DIR
|
||||
echo "Loading Docker images from $IMAGE_DIR..."
|
||||
|
||||
for image_file in "$IMAGE_DIR"/*.tar.xz; do
|
||||
if [ -f "$image_file" ]; then
|
||||
echo "Loading Docker image from $image_file..."
|
||||
docker load -i "$image_file"
|
||||
|
||||
# Check if the image loading was successful
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error occurred while loading Docker image from $image_file"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "No Docker image tar.xz files found in $IMAGE_DIR."
|
||||
fi
|
||||
done
|
||||
|
||||
# Execute docker compose
|
||||
echo "Running docker compose..."
|
||||
docker compose -f "docker/compose.yml" up -d
|
||||
|
||||
# Check if the operation was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Docker compose executed successfully"
|
||||
else
|
||||
echo "Error occurred while executing docker compose"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Deployment completed successfully"
|
@ -1,2 +0,0 @@
|
||||
caddy_2.8.tar.xz filter=lfs diff=lfs merge=lfs -text
|
||||
myp-rp_latest.tar.xz filter=lfs diff=lfs merge=lfs -text
|
BIN
packages/reservation-platform/docker/images/caddy_2.8.tar.xz
(Stored with Git LFS)
BIN
packages/reservation-platform/docker/images/caddy_2.8.tar.xz
(Stored with Git LFS)
Binary file not shown.
BIN
packages/reservation-platform/docker/images/myp-rp_latest.tar.xz
(Stored with Git LFS)
BIN
packages/reservation-platform/docker/images/myp-rp_latest.tar.xz
(Stored with Git LFS)
Binary file not shown.
@ -1,68 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get image name as argument
|
||||
IMAGE_NAME=$1
|
||||
PLATFORM="linux/arm64"
|
||||
|
||||
# Define paths
|
||||
IMAGE_DIR="docker/images"
|
||||
IMAGE_FILE="${IMAGE_DIR}/${IMAGE_NAME//[:\/]/_}.tar"
|
||||
COMPRESSED_FILE="${IMAGE_FILE}.xz"
|
||||
|
||||
# Function to pull the image
|
||||
pull_image() {
|
||||
local image=$1
|
||||
if [[ $image == arm64v8/* ]]; then
|
||||
echo "Pulling image $image without platform specification..."
|
||||
docker pull $image
|
||||
else
|
||||
echo "Pulling image $image for platform $PLATFORM..."
|
||||
docker pull --platform $PLATFORM $image
|
||||
fi
|
||||
return $?
|
||||
}
|
||||
|
||||
# Pull the image if it is not available locally
|
||||
if ! docker image inspect ${IMAGE_NAME} &>/dev/null; then
|
||||
if pull_image ${IMAGE_NAME}; then
|
||||
echo "Image $IMAGE_NAME pulled successfully."
|
||||
else
|
||||
echo "Error occurred while pulling $IMAGE_NAME for platform $PLATFORM"
|
||||
echo "Trying to pull $IMAGE_NAME without platform specification..."
|
||||
|
||||
# Attempt to pull again without platform
|
||||
if pull_image ${IMAGE_NAME}; then
|
||||
echo "Image $IMAGE_NAME pulled successfully without platform."
|
||||
else
|
||||
echo "Error occurred while pulling $IMAGE_NAME without platform."
|
||||
echo "Trying to pull arm64v8/${IMAGE_NAME} instead..."
|
||||
|
||||
# Construct new image name
|
||||
NEW_IMAGE_NAME="arm64v8/${IMAGE_NAME}"
|
||||
if pull_image ${NEW_IMAGE_NAME}; then
|
||||
echo "Image $NEW_IMAGE_NAME pulled successfully."
|
||||
IMAGE_NAME=${NEW_IMAGE_NAME} # Update IMAGE_NAME to use the new one
|
||||
else
|
||||
echo "Error occurred while pulling $NEW_IMAGE_NAME"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Image $IMAGE_NAME found locally. Skipping pull."
|
||||
fi
|
||||
|
||||
# Save the Docker image
|
||||
echo "Saving $IMAGE_NAME Docker image..."
|
||||
docker save ${IMAGE_NAME} > $IMAGE_FILE
|
||||
|
||||
# Compress the Docker image (overwriting if file exists)
|
||||
echo "Compressing $IMAGE_FILE..."
|
||||
xz -z --force $IMAGE_FILE
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$IMAGE_NAME Docker image saved and compressed successfully as $COMPRESSED_FILE"
|
||||
else
|
||||
echo "Error occurred while compressing $IMAGE_NAME Docker image"
|
||||
exit 1
|
||||
fi
|
@ -1,17 +0,0 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Frontend for testing - using external backend
|
||||
frontend-test:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: Dockerfile
|
||||
container_name: myp-frontend-test
|
||||
environment:
|
||||
- NODE_ENV=development
|
||||
- AUTH_TRUST_HOST=true
|
||||
- AUTH_SECRET=test-secret-key-for-testing-only-do-not-use-in-production
|
||||
- NEXT_PUBLIC_BACKEND_URL=http://192.168.0.105:5000
|
||||
ports:
|
||||
- "127.0.0.1:3000:3000"
|
||||
network_mode: "host"
|
@ -1,9 +0,0 @@
|
||||
[0;33mStarting MYP integration test environment...[0m
|
||||
Test directory: /home/user/Projektarbeit-MYP/packages/reservation-platform/docker
|
||||
Parent directory: /home/user/Projektarbeit-MYP/packages/reservation-platform
|
||||
Log file: /home/user/Projektarbeit-MYP/packages/reservation-platform/docker/test-integration.log
|
||||
[0;33mCleaning up any existing test environment...[0m
|
||||
[0;33mStarting test environment with docker-compose...[0m
|
||||
unable to prepare context: path "/home/user/Projektarbeit-MYP/packages/backend" not found
|
||||
[0;31mFailed to start test environment.[0m
|
||||
Check the log file for details: /home/user/Projektarbeit-MYP/packages/reservation-platform/docker/test-integration.log
|
@ -1,161 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Test integration script - validates if the frontend and backend work together
|
||||
# Specifically designed to test if the production environment setup will work
|
||||
|
||||
# Get the directory containing this script
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
PARENT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
TEST_LOG="$SCRIPT_DIR/test-integration.log"
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Create or clear log file
|
||||
> "$TEST_LOG"
|
||||
|
||||
echo -e "${YELLOW}Starting MYP integration test environment...${NC}" | tee -a "$TEST_LOG"
|
||||
echo "Test directory: $SCRIPT_DIR" | tee -a "$TEST_LOG"
|
||||
echo "Parent directory: $PARENT_DIR" | tee -a "$TEST_LOG"
|
||||
echo "Log file: $TEST_LOG" | tee -a "$TEST_LOG"
|
||||
|
||||
# Function to run docker compose (handles both docker-compose and docker compose syntax)
|
||||
run_docker_compose() {
|
||||
if command -v docker-compose &> /dev/null; then
|
||||
docker-compose "$@"
|
||||
elif command -v docker &> /dev/null && docker compose version &> /dev/null; then
|
||||
docker compose "$@"
|
||||
else
|
||||
echo -e "${RED}Error: Neither docker-compose nor docker compose is available${NC}" | tee -a "$TEST_LOG"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Stop any existing test environment (cleanup)
|
||||
echo -e "${YELLOW}Cleaning up any existing test environment...${NC}" | tee -a "$TEST_LOG"
|
||||
run_docker_compose -f "$SCRIPT_DIR/test-env.yml" down >> "$TEST_LOG" 2>&1
|
||||
|
||||
# Start the test environment
|
||||
echo -e "${YELLOW}Starting test environment with docker-compose...${NC}" | tee -a "$TEST_LOG"
|
||||
run_docker_compose -f "$SCRIPT_DIR/test-env.yml" up -d >> "$TEST_LOG" 2>&1
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}Failed to start test environment.${NC}" | tee -a "$TEST_LOG"
|
||||
echo "Check the log file for details: $TEST_LOG" | tee -a "$TEST_LOG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if external backend is available
|
||||
echo -e "${YELLOW}Checking if external backend is available...${NC}" | tee -a "$TEST_LOG"
|
||||
max_attempts=10
|
||||
attempt=1
|
||||
backend_ready=false
|
||||
|
||||
while [ $attempt -le $max_attempts ] && [ "$backend_ready" = "false" ]; do
|
||||
echo "Checking backend readiness (attempt $attempt/$max_attempts)..." | tee -a "$TEST_LOG"
|
||||
|
||||
if curl -s http://192.168.0.105:5000/api/health &> /dev/null; then
|
||||
backend_ready=true
|
||||
echo -e "${GREEN}External backend is available!${NC}" | tee -a "$TEST_LOG"
|
||||
else
|
||||
echo "External backend not available yet, waiting..." | tee -a "$TEST_LOG"
|
||||
sleep 2
|
||||
attempt=$((attempt+1))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$backend_ready" = "false" ]; then
|
||||
echo -e "${RED}External backend at 192.168.0.105:5000 is not available after $max_attempts attempts${NC}" | tee -a "$TEST_LOG"
|
||||
echo -e "${RED}Please make sure the backend is running on the separate Raspberry Pi${NC}" | tee -a "$TEST_LOG"
|
||||
|
||||
# Cleanup
|
||||
run_docker_compose -f "$SCRIPT_DIR/test-env.yml" down >> "$TEST_LOG" 2>&1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Wait for frontend to be ready
|
||||
echo -e "${YELLOW}Waiting for frontend to be ready...${NC}" | tee -a "$TEST_LOG"
|
||||
max_attempts=30
|
||||
attempt=1
|
||||
frontend_ready=false
|
||||
|
||||
while [ $attempt -le $max_attempts ] && [ "$frontend_ready" = "false" ]; do
|
||||
echo "Checking frontend readiness (attempt $attempt/$max_attempts)..." | tee -a "$TEST_LOG"
|
||||
|
||||
if curl -s http://127.0.0.1:3000 &> /dev/null; then
|
||||
frontend_ready=true
|
||||
echo -e "${GREEN}Frontend is ready!${NC}" | tee -a "$TEST_LOG"
|
||||
else
|
||||
echo "Frontend not ready yet, waiting..." | tee -a "$TEST_LOG"
|
||||
sleep 2
|
||||
attempt=$((attempt+1))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$frontend_ready" = "false" ]; then
|
||||
echo -e "${RED}Frontend failed to start properly after $max_attempts attempts${NC}" | tee -a "$TEST_LOG"
|
||||
echo "Logs from frontend container:" | tee -a "$TEST_LOG"
|
||||
run_docker_compose -f "$SCRIPT_DIR/test-env.yml" logs frontend-test >> "$TEST_LOG" 2>&1
|
||||
|
||||
# Cleanup
|
||||
run_docker_compose -f "$SCRIPT_DIR/test-env.yml" down >> "$TEST_LOG" 2>&1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Perform basic integration tests
|
||||
echo -e "${YELLOW}Performing basic integration tests...${NC}" | tee -a "$TEST_LOG"
|
||||
|
||||
# Test 1: Frontend can fetch API data (printers endpoint)
|
||||
echo "Test 1: Frontend can fetch data from backend API..." | tee -a "$TEST_LOG"
|
||||
frontend_container_id=$(docker ps -qf "name=myp-frontend-test")
|
||||
|
||||
if [ -z "$frontend_container_id" ]; then
|
||||
echo -e "${RED}Failed to find frontend container${NC}" | tee -a "$TEST_LOG"
|
||||
run_docker_compose -f "$SCRIPT_DIR/test-env.yml" down >> "$TEST_LOG" 2>&1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run a simple test inside the frontend container to check API connectivity
|
||||
api_test_result=$(docker exec $frontend_container_id curl -s http://192.168.0.105:5000/api/health)
|
||||
if [[ "$api_test_result" == *"healthy"* ]]; then
|
||||
echo -e "${GREEN}Test 1 PASSED: Frontend can connect to backend API${NC}" | tee -a "$TEST_LOG"
|
||||
else
|
||||
echo -e "${RED}Test 1 FAILED: Frontend cannot connect to backend API${NC}" | tee -a "$TEST_LOG"
|
||||
echo "API response: $api_test_result" | tee -a "$TEST_LOG"
|
||||
# Don't exit, continue with other tests
|
||||
fi
|
||||
|
||||
# Test 2: Frontend serves HTML content
|
||||
echo "Test 2: Frontend serves valid HTML content..." | tee -a "$TEST_LOG"
|
||||
frontend_html=$(curl -s http://127.0.0.1:3000)
|
||||
if [[ "$frontend_html" == *"<!DOCTYPE html>"* ]]; then
|
||||
echo -e "${GREEN}Test 2 PASSED: Frontend serves valid HTML${NC}" | tee -a "$TEST_LOG"
|
||||
else
|
||||
echo -e "${RED}Test 2 FAILED: Frontend does not serve valid HTML${NC}" | tee -a "$TEST_LOG"
|
||||
# Don't exit, continue with other tests
|
||||
fi
|
||||
|
||||
# All tests completed
|
||||
echo -e "${GREEN}Integration tests completed${NC}" | tee -a "$TEST_LOG"
|
||||
|
||||
# Ask if the environment should be kept running or shutdown
|
||||
echo -e "${YELLOW}Test environment is running at:${NC}" | tee -a "$TEST_LOG"
|
||||
echo "Frontend: http://127.0.0.1:3000" | tee -a "$TEST_LOG"
|
||||
echo "Backend: http://192.168.0.105:5000 (external Raspberry Pi)" | tee -a "$TEST_LOG"
|
||||
echo "" | tee -a "$TEST_LOG"
|
||||
|
||||
read -p "Do you want to keep the test environment running? (y/n): " keep_running
|
||||
|
||||
if [[ "$keep_running" != "y" && "$keep_running" != "Y" ]]; then
|
||||
echo -e "${YELLOW}Shutting down test environment...${NC}" | tee -a "$TEST_LOG"
|
||||
run_docker_compose -f "$SCRIPT_DIR/test-env.yml" down >> "$TEST_LOG" 2>&1
|
||||
echo -e "${GREEN}Test environment has been shut down${NC}" | tee -a "$TEST_LOG"
|
||||
else
|
||||
echo -e "${GREEN}Test environment is still running${NC}" | tee -a "$TEST_LOG"
|
||||
echo "To stop it later, run: docker-compose -f $SCRIPT_DIR/test-env.yml down" | tee -a "$TEST_LOG"
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}Integration testing completed. See log for details: $TEST_LOG${NC}"
|
Reference in New Issue
Block a user