Files
computer-playbook/compose.yml
T
kevinveenbirkenbachandClaude Opus 4.7 b26f7f0169 fix(compose): expose INFINITO_CONTAINER_NO_CA to the infinito container
Same KeyError class as 28e7c20cf (INFINITO_SERVICES_DISABLED):
roles/sys-svc-container/files/container.py:450 reads
os.environ["INFINITO_CONTAINER_NO_CA"] strictly. The variable is
emitted into the host shell .env via passthrough.STATIC_KEYS, but the
compose `environment:` block did not forward it, so docker compose
substitution was never wired into the container.

Triggers as soon as the DinD-DNS handler (sys-svc-container/handlers)
invokes `container run` from inside test-dns.sh, well past the first
visible failure point. With this entry the inner container.py reads
"" (the env/default.env default) and treats CA injection as enabled
— the intended behaviour.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 04:25:22 +02:00

127 lines
5.1 KiB
YAML

---
x-ci-defaults: &ci_defaults
dns:
- ${INFINITO_DNS_IP}
dns_opt:
- ndots:1
# Bare CI/runtime stack. Cache layers in via compose/cache.override.yml.
services:
coredns:
image: coredns/coredns:1.14.3
container_name: infinito-coredns
profiles: ["ci"]
command: ["-conf", "/Corefile"]
volumes:
- ./compose/coredns/Corefile:/Corefile:ro
networks:
default:
ipv4_address: ${INFINITO_DNS_IP}
infinito:
networks:
default:
ipv4_address: ${INFINITO_IP4}
build:
context: .
dockerfile: Dockerfile
network: host
args:
INFINITO_PARENT_IMAGE: ${INFINITO_PARENT_IMAGE}
INFINITO_SRC_DIR: ${INFINITO_SRC_DIR}
NIX_CONFIG: ${NIX_CONFIG}
image: "${INFINITO_IMAGE}"
pull_policy: "${INFINITO_PULL_POLICY:?Run 'make dotenv' to generate the .env single source of truth}"
depends_on:
coredns:
condition: service_started
command:
- /sbin/init
- systemd.log_target=console
- systemd.log_level=debug
- systemd.journald.forward_to_console=1
- systemd.journald.max_level_console=debug
stop_signal: SIGRTMIN+3
# systemd needs the host cgroup namespace.
privileged: true
cgroup: host
tmpfs:
- /run
- /run/lock
tty: true
stdin_open: true
container_name: ${INFINITO_CONTAINER:?Run 'make dotenv' to generate the .env single source of truth}
restart: "no"
profiles: ["ci"]
# Defaults of 0 map to "unlimited" in dockerd.
mem_limit: ${INFINITO_MEM_LIMIT:?Run 'make dotenv' to generate the .env single source of truth}
memswap_limit: ${INFINITO_MEMSWAP_LIMIT:?Run 'make dotenv' to generate the .env single source of truth}
cpus: ${INFINITO_CPUS:?Run 'make dotenv' to generate the .env single source of truth}
<<: *ci_defaults
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
- .:${INFINITO_SRC_DIR}
- ${INFINITO_DOCKER_VOLUME:?Run 'make dotenv' to generate the .env single source of truth}:${INFINITO_DOCKER_MOUNT:?Run 'make dotenv' to generate the .env
single source of truth}
- infinito:/var/lib/infinito/
- letsencrypt:/etc/letsencrypt/
environment:
INFINITO_CONTAINER_NO_CA: ${INFINITO_CONTAINER_NO_CA}
INFINITO_DNS_IP: ${INFINITO_DNS_IP}
INFINITO_DOMAIN: ${INFINITO_DOMAIN}
INFINITO_IP4: ${INFINITO_IP4}
INFINITO_IP6: ${INFINITO_IP6}
INFINITO_PLAYWRIGHT_KEEP: ${INFINITO_PLAYWRIGHT_KEEP}
INFINITO_SERVICES_DISABLED: ${INFINITO_SERVICES_DISABLED}
INFINITO_SRC_DIR: ${INFINITO_SRC_DIR}
PYTHONHTTPSVERIFY: "1"
GIT_SSL_NO_VERIFY: "0"
ports:
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:25:25"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:110:110"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:143:143"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:465:465"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:587:587"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:993:993"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:995:995"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:4190:4190"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:80:80"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:443:443"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:8448:8448"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:3478-3480:3478-3480/udp"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:3478-3480:3478-3480"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:1935:1935"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:2201:2201"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:2202:2202"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:2203:22"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:33552:33552"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:48081-48083:48081-48083"
- "${INFINITO_BIND_IP:?Run 'make dotenv' to generate the .env single source of truth}:48087:48087"
volumes:
docker:
infinito:
letsencrypt:
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: "${INFINITO_OUTER_NETWORK_MTU:?Run 'make dotenv' to generate the .env single source of truth}"
ipam:
config:
- subnet: ${INFINITO_SUBNET:?Run 'make dotenv' to generate the .env single source of truth}
gateway: ${INFINITO_GATEWAY:?Run 'make dotenv' to generate the .env single source of truth}