Skip to content

Sturggled to install Prowler App on Arm64 - providing notes for others to reference on workaround #7659

Closed
@Fennerr

Description

@Fennerr

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

Image

Indications that it is an architecture issue:

Image

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

Metadata

Metadata

Assignees

Labels

dockerPull requests that update Docker imagesseverity/lowBug won't result in any noticeable breakdown of the execution.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions