This document explains how to build and use Readarr Docker images.
The Dockerfile uses a multi-stage build process that:
- Builds the .NET backend
- Builds the React frontend
- Packages everything together
- Creates the final runtime image
Use the provided build script:
./docker-build.shThis will build with default values:
- Version: 0.4.19.0
- Vendor: Readarr
- Branch: develop
- Image name: readarr
- Tag: latest
You can customize the build with various options:
./docker-build.sh \
--version "0.4.19.1" \
--vendor "YourName" \
--branch "feature-branch" \
--image-name "my-readarr" \
--tag "v1.0"If you prefer to use Docker directly:
docker build \
--build-arg VERSION="0.4.19.0" \
--build-arg VENDOR="Readarr" \
--build-arg BRANCH="develop" \
--tag readarr:latest \
.docker run -d \
--name readarr \
-p 8787:8787 \
-v /path/to/config:/config \
-v /path/to/books:/books \
readarr:latestThe GitHub Actions workflow automatically builds and pushes Docker images to GitHub Container Registry (GHCR) on:
- Push to
developbranch - Push to
masterbranch - Pull requests to
developbranch
Images are tagged as:
ghcr.io/readarr/readarr:latest- Latest buildghcr.io/readarr/readarr:0.4.19.123- Version-specific build
The CI workflow:
- Sets version and build metadata
- Runs tests (unit and integration)
- Builds Docker image using multi-stage Dockerfile
- Pushes to GHCR
| Argument | Description | Default |
|---|---|---|
VERSION |
Readarr version number | Required |
VENDOR |
Package author/vendor | Required |
BRANCH |
Git branch name | develop |
BUILD_CONFIGURATION |
.NET build configuration | Release |
- Uses .NET 6.0 SDK Alpine image
- Builds all .NET projects
- Publishes for multiple platforms
- Uses Node.js 20 Alpine image
- Installs dependencies with Yarn
- Builds React application
- Combines backend and frontend builds
- Runs packaging scripts
- Creates final artifacts
- Uses Alpine 3.22
- Copies packaged application
- Sets up runtime environment
- Out of memory: Increase Docker memory limit
- Network timeouts: Check internet connection for package downloads
- Permission errors: Ensure proper file permissions
- Port conflicts: Change the exposed port (8787)
- Volume mounts: Ensure proper paths and permissions
- Configuration: Check
/configvolume mount
For development builds, you can modify the Dockerfile to:
- Use development configurations
- Include debugging tools
- Enable hot reloading
Example development build:
docker build \
--build-arg BUILD_CONFIGURATION=Debug \
--build-arg BRANCH="dev" \
--tag readarr:dev \
.