Description
Steps to Reproduce
Tried to setup the prowler app on an arm64 architecture, and struggled with following the instructions (well they gave me errors when trying to follow them). I also am using docker-compose instead of the newer docker compose, but I thought I would just give some of my notes on how I got it running. I did follow the instructions in the wiki on setting that linux/arm64 value in the .env file.
Git clone the repo
cd in ui, build the image:
- docker buildx build --platform linux/arm64 -t prowler-ui --load .
cd into api, build the image:
- docker buildx build --platform linux/arm64 -t prowler-api --load .
From previous attempts, I had a platform incompatible image of postgresql. Had to pull it manually for the correct platform:
- docker pull --platform linux/arm64 postgres:16.3-alpine3.20
I did the same for valkey when debugging the issue, as it was throwing the same issue (see screenshot further down with exec format error):
- docker pull --platformvalkey/valkey:7-alpine3.19
Then modify the docker-compose.yaml file in the root directory to rather use the local images:
services:
api:
hostname: "prowler-api"
image: prowler-api
env_file:
- .env
ports:
- "${DJANGO_PORT:-8080}:${DJANGO_PORT:-8080}"
volumes:
- "/tmp/prowler_api_output:/tmp/prowler_api_output"
depends_on:
postgres:
condition: service_healthy
valkey:
condition: service_healthy
entrypoint:
- "/home/prowler/docker-entrypoint.sh"
- "prod"
ui:
image: prowler-ui
env_file:
- .env
ports:
- ${UI_PORT:-3000}:${UI_PORT:-3000}
postgres:
image: postgres:16.3-alpine3.20
hostname: "postgres-db"
volumes:
- ./_data/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${POSTGRES_ADMIN_USER}
- POSTGRES_PASSWORD=${POSTGRES_ADMIN_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
env_file:
- .env
ports:
- "${POSTGRES_PORT:-5432}:${POSTGRES_PORT:-5432}"
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U ${POSTGRES_ADMIN_USER} -d ${POSTGRES_DB}'"]
interval: 5s
timeout: 5s
retries: 5
valkey:
image: valkey/valkey:7-alpine3.19
hostname: "valkey"
volumes:
- ./_data/valkey:/data
env_file:
- .env
ports:
- "${VALKEY_PORT:-6379}:6379"
healthcheck:
test: ["CMD-SHELL", "sh -c 'valkey-cli ping'"]
interval: 10s
timeout: 5s
retries: 3
worker:
image: prowler-api
env_file:
- .env
volumes:
- "/tmp/prowler_api_output:/tmp/prowler_api_output"
depends_on:
valkey:
condition: service_healthy
postgres:
condition: service_healthy
entrypoint:
- "/home/prowler/docker-entrypoint.sh"
- "worker"
worker-beat:
image: prowler-api
env_file:
- ./.env
depends_on:
valkey:
condition: service_healthy
postgres:
condition: service_healthy
entrypoint:
- "../docker-entrypoint.sh"
- "beat"
And then run docker-compose up
Expected behavior
Prehaps have arm64 images prebuilt. Im a noob at docker though - not sure if this is correct, but seems like it might help solve the issue.
Actual Result with Screenshots or Logs
Issue shown when trying to do a docker-compose up
Indications that it is an architecture issue:
How did you install Prowler?
Cloning the repository from github.com (git clone)
Environment Resource
CLI
OS used
Kali linux arm64
Prowler version
3.11.3 (doesnt matter, this is a docker setup issue, didnt use the cli)
Pip version
same as above
Context
No response