Container
Official image
There is a published multi-architecture image, so most deployments need no Dockerfile at all:
airpipeio/agent:1.42.1
linux/amd64 and linux/arm64, Alpine-based, running as a non-root user (uid
10001). Configs are mounted rather than baked in, so editing one does not mean
rebuilding an image:
docker run -d \
-p 4111:4111 \
-e AIRPIPE_API_KEY="$AIRPIPE_API_KEY" \
-v "$(pwd)/configs:/app/configs:ro" \
airpipeio/agent:1.42.1
Pin the version rather than tracking latest, so a container restarting
unattended cannot quietly pick up a different engine.
Running more than one replica? See Kubernetes — scheduled jobs, realtime fan-out and state all behave differently once there are peers, and the same settings apply to Docker Compose.
Build your own image
Prefer to control the base image, add your own tooling, or bake configs in? The rest of this page builds an image from scratch.
Retrieve API Key
Log in and retrieve an API key from https://app.airpipe.io/apikeys
Create a configs directory
Supply any number of configuration files in this directory, and then ensure they are targeted.
Your structure could look something similar as below:
├── configs
│ ├── infoAPI.yml
│ ├── accountsAPI.yml
│ ├── backupAPI.yml
│ └── service1.yml
└── Dockerfile
Adjust Dockerfile as appropriate
Use the below Dockerfile as a starting point.
FROM alpine:latest
# Pin a specific version (docker build --build-arg AIRPIPE_VERSION=1.0.0 .)
# or leave empty to pull the latest at build time from download.airpipe.io.
ARG AIRPIPE_VERSION=""
ENV AIRPIPE_API_KEY="YOUR_API_KEY"
WORKDIR /app
RUN apk add --no-cache curl nano && \
VERSION="${AIRPIPE_VERSION:-$(curl -fsSL https://download.airpipe.io/latest.version)}" && \
ARCH=$(uname -m) && \
echo "Installing Air Pipe ${VERSION} for ${ARCH}" && \
if [ "$ARCH" = "x86_64" ]; then \
curl -o /app/agent "https://download.airpipe.io/${VERSION}/linux/x86_64/airpipe"; \
elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then \
curl -o /app/agent "https://download.airpipe.io/${VERSION}/linux/aarch64/airpipe"; \
else \
echo "Unsupported architecture: ${ARCH}" && exit 1; \
fi && \
chmod +x /app/agent
# UPDATE to your config directory
COPY configs /app/configs
LABEL org.opencontainers.image.title="airpipe" \
org.opencontainers.image.version="${AIRPIPE_VERSION:-latest}" \
org.opencontainers.image.source="https://download.airpipe.io"
# 4111 is the default http port used
EXPOSE 4111
CMD ["/app/agent", "server", "--config-dir", "configs/"]
Build Image
Name the image to something you prefer for your purpose.
By default Air Pipe runs on port 4111 you can adjust this if required.
The Dockerfile pulls the latest Air Pipe version at build time. To pin a
specific version, pass a build arg (e.g. --build-arg AIRPIPE_VERSION=1.0.0).
docker build -t my-airpipe-image .
Pin a version:
docker build --build-arg AIRPIPE_VERSION=1.0.0 -t my-airpipe-image .
Running on Docker
docker run -d -p 4111:4111 my-airpipe-image