There is no official octoDNS Docker image. This guide shows how to build a custom image for running octoDNS in containers.
See Docker installation: Docker
Create a Dockerfile for octoDNS:
FROM python:3.11-slim
WORKDIR /opt/octodns
# Install octoDNS and provider plugins
RUN pip install --no-cache-dir \
octodns \
octodns-route53 \
octodns-cloudflare \
octodns-bind
# Create config and zones directories
RUN mkdir -p /opt/octodns/config /opt/octodns/zones
WORKDIR /opt/octodns
ENTRYPOINT ["octodns-sync"]
docker build -t octodns:latest .
Dry-run (default):
docker run --rm \
-v $(pwd)/config:/opt/octodns/config \
-v $(pwd)/zones:/opt/octodns/zones \
octodns:latest --config-file=/opt/octodns/config/production.yaml
Apply changes:
docker run --rm \
-v $(pwd)/config:/opt/octodns/config \
-v $(pwd)/zones:/opt/octodns/zones \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
octodns:latest --config-file=/opt/octodns/config/production.yaml --doit
Create docker-compose.yml:
services:
octodns:
build: .
image: octodns:latest
volumes:
- ./config:/opt/octodns/config
- ./zones:/opt/octodns/zones
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
command: --config-file=/opt/octodns/config/production.yaml
Run with Compose:
# Dry-run
docker-compose run --rm octodns
# Apply changes
docker-compose run --rm octodns --doit
config/production.yaml:
---
providers:
config:
class: octodns.provider.yaml.YamlProvider
directory: /opt/octodns/zones
default_ttl: 3600
enforce_order: true
route53:
class: octodns_route53.Route53Provider
access_key_id: env/AWS_ACCESS_KEY_ID
secret_access_key: env/AWS_SECRET_ACCESS_KEY
zones:
example.com.:
sources:
- config
targets:
- route53
zones/example.com.yaml:
---
'':
ttl: 60
type: A
values:
- 1.2.3.4
www:
ttl: 300
type: CNAME
value: example.com.
USER 1000 to Dockerfile for productionNeed help with octoDNS Docker deployments? We provide consulting for containerized DNS-as-code workflows, custom Docker images with provider plugins, and CI/CD pipeline integration. Contact office@linux-server-admin.com or visit our contact page.