This guide runs octoDNS using the official octodns/octodns Docker image.
See Docker installation: Docker
docker pull octodns/octodns:latest
Dry-run (default):
docker run --rm \
-v $(pwd)/config:/etc/octodns/config \
-v $(pwd)/zones:/etc/octodns/zones \
-w /etc/octodns \
octodns/octodns:latest octodns-sync --config-file=config/production.yaml
Apply changes:
docker run --rm \
-v $(pwd)/config:/etc/octodns/config \
-v $(pwd)/zones:/etc/octodns/zones \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
-w /etc/octodns \
octodns/octodns:latest octodns-sync --config-file=config/production.yaml --doit
Create docker-compose.yml:
services:
octodns:
image: octodns/octodns:latest
volumes:
- ./config:/etc/octodns
working_dir: /etc/octodns
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
command: octodns-sync --config-file=config.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: ./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.
Need help with octoDNS Docker deployments? We provide consulting for containerized DNS-as-code workflows and CI/CD pipeline integration. Contact office@linux-server-admin.com or visit our contact page.