-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdocker-compose.yml
181 lines (171 loc) · 7.33 KB
/
docker-compose.yml
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
# Also must see the override file: docker-compose.override.yml
#
# This docker-compose is used to run everything with verbose logging for development
#
# *.selfhosted.moonspeak.org points to 127.0.0.1, when resolved from inside container it gets overriden by docker-compose built-in DNS server
#
# port definitions for services are for debug/development,
# except the gateway service which is expected to be exposed to the internet
#
# For interactive pdb debug add to service definition:
# stdin_open: true # docker run -i
# tty: true # docker run -t
# and run "docker attach CONTAINER_NAME"
#
version: "3"
volumes:
# volume for demouser1
userdata:
name: demouser1_userdata
networks:
default:
# the network name is also the alternative top domain for containers e.g. keycloak.selfhosted.moonspeak.org
# previously used .localhost (and .moonspeaknet) TLD, but libcurl force resolves it to 127.0.0.1 since version v7.85
# see: https://serverfault.com/questions/1128965/curl-has-incorrect-dns-resolution-in-a-dind-context
# but some TLD is needed, because its uses must be located and changed for prod
name: selfhosted.moonspeak.org
services:
#===================================
gateway:
image: "temachpool/moonspeak-gateway:${TAG:-latest}"
build:
# nginx version is hard linked to opentelemetry version in Dockerfile
context: ./moonspeak/gateway
ports:
- "80:80"
- "443:443"
command: nginx-debug -g "daemon off; error_log stderr info;"
#===================================
manager:
image: "temachpool/moonspeak-manager:${TAG:-latest}"
build:
context: ./moonspeak/manager
args:
BASE_IMAGE: "temachpool/moonspeak-apachepython:latest"
ports:
- "8001:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
env_file:
- docker-env/all.env
- docker-env/manager.env
landing:
# no MOONSPEAK_PORT env for landing because nginx is less flexible
# port 80 gets hardcoded when building the container
image: "temachpool/moonspeak-landing:${TAG:-latest}"
build:
context: ./moonspeak/landing
args:
BUILDER_IMAGE: "node:19.2"
BASE_IMAGE: "nginx:1.23-alpine"
ports:
- "8002:80"
command: nginx-debug -g "daemon off; error_log stderr info;"
synonyms:
image: "temachpool/moonspeak-synonyms:${TAG:-latest}"
build:
context: ./moonspeak/synonyms
args:
BUILDER_IMAGE: "node:19.2"
BASE_IMAGE: "temachpool/moonspeak-apachepython:latest"
ports:
- "8043:80"
env_file:
- docker-env/all.env
- docker-env/synonyms.env
suggestions:
image: "temachpool/moonspeak-suggestions:${TAG:-latest}"
build:
context: ./moonspeak/suggestions
args:
BUILDER_IMAGE: "node:19.2"
BASE_IMAGE: "python:3.11-alpine"
ports:
- "8042:80"
env_file:
- docker-env/suggestions.env
frequency:
image: "temachpool/moonspeak-frequency:${TAG:-latest}"
build:
context: ./moonspeak/frequency
args:
BASE_IMAGE: "temachpool/moonspeak-apachepython:latest"
ports:
- "8005:80"
env_file:
- docker-env/all.env
- docker-env/frequency.env
#==================================
# this is the demo user for development, graph address is the user's unique access url
workelements:
image: "temachpool/moonspeak-workelements:${TAG:-latest}"
container_name: u-demouser1-s-workelements
build:
context: ./moonspeak/workelements
args:
BUILDER_IMAGE: "node:19.2"
BASE_IMAGE: "temachpool/moonspeak-apachepython:latest"
volumes:
- userdata:/opt/moonspeak/userdata
ports:
- "8040:80"
env_file:
- docker-env/all.env
- docker-env/workelements.env
graph:
image: "temachpool/moonspeak-graph:${TAG:-latest}"
container_name: u-demouser1-s-graph
build:
context: ./moonspeak/graph
args:
BUILDER_IMAGE: "debian:bookworm-slim"
BASE_IMAGE: "temachpool/moonspeak-apachepython:latest"
volumes:
- userdata:/opt/moonspeak/userdata
ports:
- "8041:80"
env_file:
- docker-env/all.env
- docker-env/graph.env
environment:
# this xml sets default graph value, put here because its multiline
MOONSPEAK_GRAPH_INITIAL_XML: >-
<mxfile host="selfhosted.moonspeak.org" modified="2023-03-08T09:50:31.755Z" agent="5.0 (X11; Ubuntu)" etag="x1sPpmzUOXcRObYpYGWO" version="20.3.0" type="moonspeak">
<diagram id="SKebBaCcsGTVzdhOYIFn" name="pageWithNumber">
<mxGraphModel dx="3702" dy="1137" grid="1" gridSize="10" guides="1" tooltips="0" connect="1" arrows="0" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" style="locked=1;" parent="0" />
<iframe xmlns="http://www.w3.org/1999/xhtml" name="workelements" src="https://u-demouser1-s-workelements.selfhosted.moonspeak.org" style="width: 680px; height: 560px; border: medium none;" pointer-events="none" id="2">
<mxCell style="iframe=1;" parent="1" xmlns="" vertex="1">
<mxGeometry x="-210" y="-70" width="700" height="580" as="geometry" />
</mxCell>
</iframe>
<mxCell id="11" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.003;entryY=0.384;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="4" target="2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<iframe xmlns="http://www.w3.org/1999/xhtml" name="suggestions" src="https://suggestions.selfhosted.moonspeak.org" style="width: 380px; height: 290px; border: medium none;" pointer-events="none" id="4">
<mxCell style="iframe=1;" parent="1" xmlns="" vertex="1">
<mxGeometry x="-700" y="120" width="400" height="310" as="geometry" />
</mxCell>
</iframe>
<mxCell id="12" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="5" target="2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<iframe xmlns="http://www.w3.org/1999/xhtml" name="synonyms" src="https://synonyms.selfhosted.moonspeak.org" style="width: 474px; height: 424px; border: medium none;" pointer-events="none" id="5">
<mxCell style="iframe=1;" parent="1" xmlns="" vertex="1">
<mxGeometry x="560" width="490" height="440" as="geometry" />
</mxCell>
</iframe>
<iframe xmlns="http://www.w3.org/1999/xhtml" name="frequency" src="https://frequency.selfhosted.moonspeak.org" style="width: 380px; height: 290px; border: medium none;" pointer-events="none" id="6">
<mxCell style="iframe=1;" parent="1" xmlns="" vertex="1">
<mxGeometry x="-700" y="-260" width="400" height="310" as="geometry" />
</mxCell>
</iframe>
<object label="freehand" id="JOpQ_ee-CrSYCSZTWhDq-18">
<mxCell style="" parent="0" />
</object>
</root>
</mxGraphModel>
</diagram>
</mxfile>