act-docker-setup

Act - Docker Configuration and Setup

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "act-docker-setup" with this command: npx skills add thebushidocollective/han/thebushidocollective-han-act-docker-setup

Act - Docker Configuration and Setup

Use this skill when configuring Docker for act, choosing runner images, managing container resources, and optimizing Docker performance for local GitHub Actions workflow testing.

Runner Images

Image Size Categories

Act supports three image size categories:

Size Image Tools Use Case

Micro node:16-buster-slim

Minimal Simple Node.js workflows

Medium catthehacker/ubuntu:act-*

Common tools Most workflows

Large catthehacker/ubuntu:full-*

Everything Maximum compatibility

Official catthehacker Images

Latest Ubuntu (22.04)

act -P ubuntu-latest=catthehacker/ubuntu:act-latest

Specific Ubuntu versions

act -P ubuntu-22.04=catthehacker/ubuntu:act-22.04 act -P ubuntu-20.04=catthehacker/ubuntu:act-20.04

Full images (larger, more tools)

act -P ubuntu-latest=catthehacker/ubuntu:full-latest act -P ubuntu-22.04=catthehacker/ubuntu:full-22.04

Runner images (closest to GitHub)

act -P ubuntu-latest=catthehacker/ubuntu:runner-latest

Language-Specific Images

Node.js

act -P ubuntu-latest=node:20 act -P ubuntu-latest=node:20-alpine

Python

act -P ubuntu-latest=python:3.12 act -P ubuntu-latest=python:3.12-slim

Go

act -P ubuntu-latest=golang:1.22 act -P ubuntu-latest=golang:1.22-alpine

Ruby

act -P ubuntu-latest=ruby:3.3 act -P ubuntu-latest=ruby:3.3-alpine

Platform Configuration

.actrc Configuration

Create .actrc in project root for persistent settings:

Default platform images

-P ubuntu-latest=catthehacker/ubuntu:act-latest -P ubuntu-22.04=catthehacker/ubuntu:act-22.04 -P ubuntu-20.04=catthehacker/ubuntu:act-20.04

Reuse containers

--reuse

Container options

--container-architecture linux/amd64 --container-daemon-socket -

Resource limits

--container-cap-add SYS_PTRACE --container-cap-add NET_ADMIN

Per-Workflow Configuration

Create .github/workflows/.actrc for workflow-specific settings:

-P ubuntu-latest=node:20 --env-file .env.ci

Command Line Override

Override .actrc settings

act -P ubuntu-latest=python:3.12 --no-reuse

Container Management

Reusing Containers

Reuse containers for faster iteration

act --reuse

Reuse with specific job

act --reuse -j build

Force recreate containers

act --rm

Container Lifecycle

List running act containers

docker ps --filter "label=act"

Stop all act containers

docker stop $(docker ps -q --filter "label=act")

Remove all act containers

docker rm $(docker ps -aq --filter "label=act")

Clean up act volumes

docker volume prune

Inspect Containers

Exec into running container

docker exec -it act-<job-name> /bin/bash

View container logs

docker logs act-<job-name>

Inspect container config

docker inspect act-<job-name>

Volume Mounts and Binds

Default Mounts

Act automatically mounts:

  • Current directory → /github/workspace

  • Act cache → /root/.cache/act

  • Docker socket (if needed)

Custom Bind Mounts

Mount additional directory

act --bind /host/path:/container/path

Mount multiple directories

act --bind /data:/data --bind /config:/config

Read-only mount

act --bind /readonly:/readonly:ro

Persistent Cache

Configure cache location

export ACT_CACHE_DIR=$HOME/.cache/act

Clean cache

rm -rf $HOME/.cache/act

Docker Configuration

Docker Socket

Use default Docker socket

act --container-daemon-socket -

Use custom socket

act --container-daemon-socket /var/run/docker.sock

Use Docker Desktop socket (Mac)

act --container-daemon-socket unix:///Users/$USER/.docker/run/docker.sock

Container Architecture

Specify architecture

act --container-architecture linux/amd64

For Apple Silicon Macs

act --container-architecture linux/arm64

Network Configuration

Use host network

act --network host

Use custom network

act --network my-network

Create isolated network

docker network create act-network act --network act-network

Resource Management

Memory Limits

Set memory limit

act --memory 4g

Set memory and swap

act --memory 4g --memory-swap 8g

CPU Limits

Limit CPU cores

act --cpus 2

Set CPU shares

act --cpu-shares 512

Disk Space

Check Docker disk usage

docker system df

Clean up unused resources

docker system prune -a

Remove old act cache

find ~/.cache/act -type d -mtime +30 -exec rm -rf {} +

Security

Capabilities

Add Linux capabilities

act --container-cap-add SYS_PTRACE

Drop capabilities

act --container-cap-drop ALL

Security profile

act --security-opt seccomp=unconfined

Privileged Mode

Run in privileged mode (use sparingly)

act --privileged

Safer: add specific capabilities instead

act --container-cap-add SYS_ADMIN

Multi-Platform Builds

Docker Buildx

Workflow using buildx

jobs: build: runs-on: ubuntu-latest steps: - uses: docker/setup-buildx-action@v3 - uses: docker/build-push-action@v5 with: platforms: linux/amd64,linux/arm64

Test with act:

Enable buildx in act

act --use-gitignore=false
-P ubuntu-latest=catthehacker/ubuntu:act-latest

Troubleshooting

Image Pull Failures

Pull image manually

docker pull catthehacker/ubuntu:act-latest

Use cached image

act --pull=false

Force pull latest

act --pull=true

Permission Issues

Fix workspace permissions

act --container-options "--user $(id -u):$(id -g)"

Run as root (not recommended)

act --container-options "--user root"

DNS Issues

Use custom DNS

act --container-options "--dns 8.8.8.8"

Use host DNS

act --container-options "--dns-search ."

Container Exit Codes

Continue on error

act --continue-on-error

Capture exit code

act; echo $?

Performance Optimization

Image Selection

Choose the smallest image that meets your needs:

Fast but limited

act -P ubuntu-latest=node:20-alpine

Balanced

act -P ubuntu-latest=catthehacker/ubuntu:act-latest

Comprehensive but slow

act -P ubuntu-latest=catthehacker/ubuntu:full-latest

Layer Caching

Optimize Dockerfile for caching

FROM node:20

Install system deps first (changes rarely)

RUN apt-get update && apt-get install -y git

Copy package files (changes sometimes)

COPY package*.json ./

Install deps (changes sometimes)

RUN npm ci

Copy source (changes often)

COPY . .

Parallel Jobs

Run jobs in parallel

act --parallel

Limit parallelism

act --parallel --jobs 2

Custom Images

Building Custom Image

Create Dockerfile :

FROM catthehacker/ubuntu:act-latest

Add custom tools

RUN apt-get update && apt-get install -y
postgresql-client
redis-tools
&& rm -rf /var/lib/apt/lists/*

Install specific Node version

RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
&& apt-get install -y nodejs

Install global npm packages

RUN npm install -g pnpm yarn

Build and use:

docker build -t my-act-runner . act -P ubuntu-latest=my-act-runner

Publishing Custom Image

Tag image

docker tag my-act-runner username/act-runner:latest

Push to Docker Hub

docker push username/act-runner:latest

Use in team

act -P ubuntu-latest=username/act-runner:latest

Best Practices

DO

✅ Use .actrc for consistent configuration across team ✅ Choose appropriate image size for your needs ✅ Use --reuse during development ✅ Clean up Docker resources regularly ✅ Pin image versions in production workflows ✅ Use layer caching for faster builds ✅ Document image requirements in README

DON'T

❌ Use :latest tags in production ❌ Run containers in privileged mode unnecessarily ❌ Ignore Docker disk space usage ❌ Use oversized images for simple workflows ❌ Commit large images to version control ❌ Skip Docker resource cleanup ❌ Expose sensitive data in container logs

Common Patterns

Development Setup

Fast iteration setup

cat > .actrc << 'EOF' -P ubuntu-latest=catthehacker/ubuntu:act-latest --reuse --rm=false --container-architecture linux/amd64 EOF

CI Validation

Strict validation setup

act --dryrun
--pull=true
--no-reuse
-P ubuntu-latest=catthehacker/ubuntu:full-latest

Monorepo Setup

Different images per job

act -j backend -P ubuntu-latest=node:20
-j frontend -P ubuntu-latest=node:20-alpine
-j database -P ubuntu-latest=postgres:16

Related Skills

  • act-workflow-syntax: Creating workflow files

  • act-local-testing: Testing workflows with act CLI

  • act-advanced-features: Advanced act usage patterns

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

android-jetpack-compose

No summary provided by upstream source.

Repository SourceNeeds Review
General

fastapi-async-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
General

storybook-story-writing

No summary provided by upstream source.

Repository SourceNeeds Review