plc.directory mirror
1services:
2 postgres:
3 image: postgres:16-alpine
4 container_name: plc-mirror-db
5 restart: unless-stopped
6 ports:
7 - "5432:5432"
8 environment:
9 - POSTGRES_DB=${POSTGRES_DB}
10 - POSTGRES_USER=${POSTGRES_USER}
11 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
12 volumes:
13 - postgres_data:/var/lib/postgresql/data
14 healthcheck:
15 test: ["CMD-SHELL", "pg_isready -U plc_user -d plc_mirror"]
16 interval: 10s
17 timeout: 5s
18 retries: 5
19 command: [
20 "postgres",
21 "-c", "log_statement=all",
22 "-c", "log_duration=on",
23 "-c", "log_min_duration_statement=0",
24 "-c", "max_connections=200",
25 "-c", "shared_preload_libraries=pg_stat_statements"
26 ]
27 networks:
28 - plc-network
29
30 api:
31 build: .
32 container_name: plc-api
33 restart: unless-stopped
34 command: ["./api"]
35 ports:
36 - "3000:3000"
37 volumes:
38 - ./plc.toml:/app/plc.toml:ro
39 depends_on:
40 postgres:
41 condition: service_healthy
42 healthcheck:
43 test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/_health"]
44 interval: 30s
45 timeout: 10s
46 retries: 3
47 start_period: 40s
48 networks:
49 - plc-network
50
51 mirror:
52 build: .
53 container_name: plc-mirror
54 restart: unless-stopped
55 command: ["./mirror"]
56 volumes:
57 - ./plc.toml:/app/plc.toml:ro
58 depends_on:
59 postgres:
60 condition: service_healthy
61 networks:
62 - plc-network
63
64volumes:
65 postgres_data:
66 driver: local
67
68networks:
69 plc-network:
70 driver: bridge