-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathcompose.yaml
More file actions
181 lines (168 loc) · 5.18 KB
/
compose.yaml
File metadata and controls
181 lines (168 loc) · 5.18 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# SPDX-FileCopyrightText: 2025 Magenta ApS <https://magenta.dk>
# SPDX-License-Identifier: AGPL-3.0-only
# Docker compose file used only for development in OpenStream
x-env-openstream: &env-openstream ./dev-environment/backend/openstream.env
x-env-keycloak: &env-keycloak ./dev-environment/keycloak/keycloak.env
x-env-frontend: &env-frontend ./dev-environment/frontend/frontend.env
x-common-networks: &common-networks
- openstream_net
networks:
openstream_net:
volumes:
openstream_db:
services:
openstream:
container_name: openstream
build:
context: ./backend
dockerfile: docker/Dockerfile
target: development
args:
INSTALL_DEV_DEPS: "true"
image: openstreamadminsite
pull_policy: never
env_file:
- *env-openstream
- .env
networks: *common-networks
ports:
- 8000:8000
volumes:
- ./backend/openstream/project:/app/project:Z
- ./backend/openstream/app:/app/app:Z
- ./backend/openstream/osauth:/app/osauth:Z
- ./backend/locale:/app/locale:Z
- ./dev-environment/backend/fixtures:/app/fixtures:Z
depends_on:
- db
db:
container_name: openstream-db
# Specify docker repo for Podman compatibility
image: docker.io/library/postgres:17
env_file:
- *env-openstream
- *env-keycloak
networks: *common-networks
ports:
- "5432:5432"
volumes:
- openstream_db:/var/lib/postgresql/data:Z
- ./dev-environment/backend/initdb.sh:/docker-entrypoint-initdb.d/initdb.sh:ro,Z
cron:
container_name: openstream-cron
image: openstreamadminsite
pull_policy: never
env_file:
- *env-openstream
networks: *common-networks
volumes:
- ./backend/openstream/project:/app/project:Z
- ./backend/openstream/app:/app/app:Z
entrypoint: [ "/usr/local/bin/supercronic", "/crontab" ]
depends_on:
- openstream
keycloak:
container_name: openstream-keycloak
image: docker.io/magentaaps/openstream-keycloak:0.2.5
# Add environment variables directly here to override defaults
environment:
# 1. Tell Keycloak "You are accessed via localhost from the outside"
- KC_HOSTNAME=localhost
- KC_HOSTNAME_PORT=8080
# 2. Disable strict checking so internal containers can still talk to it
- KC_HOSTNAME_STRICT=false
- KC_HOSTNAME_STRICT_BACKCHANNEL=false
# 3. Ensure it runs in HTTP mode (not HTTPS) for dev
- KC_HTTP_ENABLED=true
entrypoint: ["/opt/keycloak/bin/kc.sh", "start-dev", "--import-realm"]
env_file:
- *env-keycloak
networks: *common-networks
ports:
- "8080:8080"
volumes: []
depends_on:
- db
frontend:
container_name: openstream-frontend
build:
context: ./frontend
dockerfile: Dockerfile
target: ${DEPLOYMENT_MODE:-development}
image: openstreamadminsite-frontend
pull_policy: never
env_file:
- *env-frontend
networks: *common-networks
ports:
- "4174:4174" # Development port (Express server with Vite middleware)
- "4173:4173" # Production port (Express server)
volumes:
# Only mount source code in development mode
- ./frontend/src:/app/src:Z
- ./frontend/public:/app/public:Z
- ./frontend/server:/app/server:Z
- ./frontend/vite.config.js:/app/vite.config.js:Z
depends_on:
- openstream
polling-server:
container_name: openstream-polling
build:
context: ./polling-server
dockerfile: Dockerfile
args:
NODE_ENV: ${NODE_ENV:-development}
image: openstreamadminsite-polling
working_dir: /app
# In development we still run `npm install && npm run dev` so file bind-mounts
# (source code) work and new deps are installed on container start. In
# production, build with NODE_ENV=production and don't override the command.
command: /bin/sh -c "npm install && npm run dev"
env_file:
- *env-openstream
environment:
PGHOST: openstream-db
PGPORT: "5432"
PGDATABASE: db
PGUSER: db
PGPASSWORD: dbpassword
PORT: "3000"
DJANGO_ACTIVE_CONTENT_URL: http://openstream:8000/api/active-content/
networks: *common-networks
ports:
- "3000:3000"
volumes:
- ./polling-server:/app:Z
depends_on:
- openstream
# media_converter service removed
minio:
container_name: openstream-minio
image: docker.io/minio/minio:latest
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
networks: *common-networks
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./dev-environment/minio/data:/data:Z
command: server /data --console-address ":9001"
# ADD THIS HEALTHCHECK SECTION
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 5s
timeout: 5s
retries: 5
# ADD THIS NEW SERVICE
minio-init:
image: docker.io/minio/mc
depends_on:
minio:
condition: service_healthy # Waits for the healthcheck to pass
networks: *common-networks
entrypoint: /bin/sh
command: -c "/scripts/minio-init.sh"
volumes:
- ./minio-init.sh:/scripts/minio-init.sh:Z