-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.demo.yml
More file actions
83 lines (79 loc) · 2.28 KB
/
docker-compose.demo.yml
File metadata and controls
83 lines (79 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Docker Compose Demo: Web + Database managed by Puppet-C
#
# This demo shows puppetc managing nginx (web) and mariadb (db) containers.
# The puppetc-agent runs inside each container and applies the catalog from the server.
#
# Usage:
# 1. Build: docker-compose -f docker-compose.demo.yml build
# 2. Start: docker-compose -f docker-compose.demo.yml up -d
# 3. Check: docker-compose -f docker-compose.demo.yml logs -f
# 4. Test web: curl http://localhost:8080
# 5. Cleanup: docker-compose -f docker-compose.demo.yml down
services:
# Puppet-C Server - compiles and serves catalogs
server:
build:
context: .
target: server
image: puppetc-server:latest
container_name: puppetc-demo-server
ports:
- "8140:8140"
volumes:
- ./demo/manifests:/etc/puppet/manifests:ro
- ./demo/modules:/etc/puppet/modules:ro
- ./demo/hiera:/etc/puppet/hiera:ro
networks:
- puppet-demo
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8140/status"]
interval: 5s
timeout: 3s
retries: 10
# Web node - Debian with nginx managed by Puppet (systemd enabled)
web:
build:
context: .
dockerfile: demo/Dockerfile.node
image: puppetc-demo-node:latest
container_name: puppetc-demo-web
hostname: web
ports:
- "8080:80"
depends_on:
server:
condition: service_healthy
environment:
- PUPPET_SERVER=http://server:8140
# Required for systemd in Docker
privileged: true
cgroup: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
networks:
- puppet-demo
# Database node - Debian with MariaDB managed by Puppet (systemd enabled)
db:
build:
context: .
dockerfile: demo/Dockerfile.node
image: puppetc-demo-node:latest
container_name: puppetc-demo-db
hostname: db
depends_on:
server:
condition: service_healthy
environment:
- PUPPET_SERVER=http://server:8140
# Required for systemd in Docker
privileged: true
cgroup: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
# Mount modules for Ruby types/providers (pluginsync alternative)
- ./demo/modules:/etc/puppet/modules:ro
networks:
- puppet-demo
networks:
puppet-demo:
driver: bridge