# Fabric Docker Image This directory provides a simple Docker setup for running the [Fabric](https://github.com/danielmiessler/fabric) CLI. ## Build Build the image from the repository root: ```bash docker build -t fabric -f scripts/docker/Dockerfile . ``` ## Persisting configuration Fabric stores its configuration in `~/.config/fabric/.env`. Mount this path to keep your settings on the host. ### Using a host directory ```bash mkdir -p $HOME/.fabric-config # Run setup to create the .env and download patterns docker run --rm -it -v $HOME/.fabric-config:/root/.config/fabric fabric --setup ``` Subsequent runs can reuse the same directory: ```bash docker run --rm -it -v $HOME/.fabric-config:/root/.config/fabric fabric -p your-pattern ``` ### Mounting a single .env file If you only want to persist the `.env` file: ```bash # assuming .env exists in the current directory docker run --rm -it -v $PWD/.env:/root/.config/fabric/.env fabric -p your-pattern ``` ## Running the server Expose port 8080 to use Fabric's REST API: ```bash docker run --rm -it -p 8080:8080 -v $HOME/.fabric-config:/root/.config/fabric fabric --serve ``` The API will be available at `http://localhost:8080`. ## Multi-arch builds and GHCR packages For multi-arch Docker builds (such as those used for GitHub Container Registry packages), the description should be set via annotations in the manifest instead of the Dockerfile LABEL. When building multi-arch images, ensure the build configuration includes: ```json "annotations": { "org.opencontainers.image.description": "A Docker image for running the Fabric CLI. See https://github.com/danielmiessler/Fabric/tree/main/scripts/docker for details." } ``` This ensures that GHCR packages display the proper description.