diff --git a/Makefile b/Makefile index ea18c156..5e272d09 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,6 @@ run: bash scripts/setup-docker-compose.sh docker build . -t pyronear/pyro-engine:latest docker compose up -d - rm docker-compose.yml.bak # Get log from engine wrapper log: diff --git a/docker-compose.yml b/docker-compose.yml index e32281b5..17fb8f36 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,6 @@ services: resources: limits: cpus: "3" - memory: "" logging: driver: "json-file" options: diff --git a/scripts/setup-docker-compose.sh b/scripts/setup-docker-compose.sh index 885a0c71..bcb2b409 100644 --- a/scripts/setup-docker-compose.sh +++ b/scripts/setup-docker-compose.sh @@ -1,33 +1,34 @@ #!/bin/bash # Define the percentage of host memory you want to allocate -PERCENTAGE=70 +PERCENTAGE=90 # Get the total memory of the host system in kilobytes TOTAL_MEM_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}') +# Check if TOTAL_MEM_KB was successfully retrieved +if [ -z "$TOTAL_MEM_KB" ]; then + echo "Failed to retrieve total memory." + exit 1 +fi + # Calculate the memory limit in kilobytes LIMIT_MEM_KB=$((TOTAL_MEM_KB * PERCENTAGE / 100)) # Convert the limit to a format Docker understands (e.g., "m" for megabytes) LIMIT_MEM_MB=$((LIMIT_MEM_KB / 1024))m -# Define the Docker Compose file to modify -DOCKER_COMPOSE_FILE="docker-compose.yml" - -# Backup the original Docker Compose file -cp $DOCKER_COMPOSE_FILE "${DOCKER_COMPOSE_FILE}.bak" - -# Use awk to update the memory limits in the Docker Compose file, preserving indentation -awk -v mem_limit="$LIMIT_MEM_MB" ' -/services:/ { in_services=1 } -in_services && /deploy:/ { in_deploy=1 } -in_deploy && /resources:/ { in_resources=1 } -in_resources && /limits:/ { in_limits=1 } -in_limits && /memory:/ { - $0 = gensub(/memory:.*/, "memory: " mem_limit, 1) -} -{ print } -' "${DOCKER_COMPOSE_FILE}.bak" > "docker-compose.override.yml" - -echo "Memory limits set to $LIMIT_MEM_MB in $DOCKER_COMPOSE_FILE" +# Define the Docker Compose override file to create/update +DOCKER_COMPOSE_OVERRIDE_FILE="docker-compose.override.yml" + +# Create/update the docker-compose.override.yml with the memory limit +cat < "$DOCKER_COMPOSE_OVERRIDE_FILE" +services: + run: + deploy: + resources: + limits: + memory: $LIMIT_MEM_MB +EOF + +echo "Memory limits set to $LIMIT_MEM_MB in $DOCKER_COMPOSE_OVERRIDE_FILE"