-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
134 lines (121 loc) · 3.83 KB
/
Copy pathdocker-compose.yml
File metadata and controls
134 lines (121 loc) · 3.83 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
networks:
cyber-dojo:
driver: bridge
services:
web:
image: ${CYBER_DOJO_WEB_IMAGE}:${CYBER_DOJO_WEB_TAG}
platform: linux/amd64
build:
context: .
args:
- COMMIT_SHA
- BASE_IMAGE
user: nobody
env_file: [ web.env ]
restart: no
volumes:
- ./bin/create_v2_kata.rb:/cyber-dojo/script/create_v2_kata.rb:ro
- ./source/app:/web/source/app:ro
- ./source/test:/web/source/test:ro
- ./source/lib:/web/source/lib:ro
# The browser (Capybara) tests in source/test/app_browser drive Firefox here
# and load the web app at http://web:3000 over the compose network, so they
# exercise the rendered page and its JavaScript end to end (the in-process Rack
# tests never run browser JS). amd64 image (emulated on arm hosts), matching
# ../creator's selenium service.
selenium:
image: selenium/standalone-firefox
platform: linux/amd64
restart: no
# So containers_up's --wait blocks until the grid is actually accepting
# sessions on 4444, not merely until the container is running - otherwise
# the first browser test can hit connection-refused. check-grid.sh ships in
# the selenium image.
healthcheck:
test: [ "CMD", "/opt/bin/check-grid.sh", "--host", "0.0.0.0", "--port", "4444" ]
interval: 5s
timeout: 10s
retries: 10
start_period: 10s
creator:
image: ${CYBER_DOJO_CREATOR_IMAGE}:${CYBER_DOJO_CREATOR_TAG}
platform: linux/amd64
user: nobody
env_file: [ .env ]
read_only: true
tmpfs: /tmp
restart: no
custom-start-points:
image: ${CYBER_DOJO_CUSTOM_START_POINTS_IMAGE}:${CYBER_DOJO_CUSTOM_START_POINTS_TAG}
platform: linux/amd64
user: nobody
env_file: [ .env ]
read_only: true
tmpfs: /tmp
restart: no
exercises-start-points:
image: ${CYBER_DOJO_EXERCISES_START_POINTS_IMAGE}:${CYBER_DOJO_EXERCISES_START_POINTS_TAG}
platform: linux/amd64
user: nobody
env_file: [ .env ]
read_only: true
tmpfs: /tmp
restart: no
languages-start-points:
image: ${CYBER_DOJO_LANGUAGES_START_POINTS_IMAGE}:${CYBER_DOJO_LANGUAGES_START_POINTS_TAG}
platform: linux/amd64
user: nobody
env_file: [ .env ]
read_only: true
tmpfs: /tmp
restart: no
runner:
image: ${CYBER_DOJO_RUNNER_IMAGE}:${CYBER_DOJO_RUNNER_TAG}
platform: linux/amd64
user: root
env_file: [ .env ]
read_only: true
tmpfs: /tmp
restart: no
volumes: [ "/var/run/docker.sock:/var/run/docker.sock" ]
saver:
image: ${CYBER_DOJO_SAVER_IMAGE}:${CYBER_DOJO_SAVER_TAG}
platform: linux/amd64
user: root
env_file: [ .env ]
read_only: true
restart: no
tmpfs: [ "/cyber-dojo:uid=19663,gid=65533", "/tmp:uid=19663,gid=65533" ]
# The spooler is web's async write path: web POSTs the nine event writes
# (kata_file_create ... kata_checked_out) here (SpoolerService), the spooler
# durably buffers them and its drainer forwards them to the saver above in
# tab_seq order. Reads and non-event writes stay direct web->saver. It owns its
# own /sqlite volume (uid 19664 = the spooler user), separate from saver's
# /cyber-dojo. web reaches it at hostname 'spooler' on CYBER_DOJO_SPOOLER_PORT.
spooler:
image: ${CYBER_DOJO_SPOOLER_IMAGE}:${CYBER_DOJO_SPOOLER_TAG}
platform: linux/amd64
user: spooler
env_file: [ .env ]
read_only: true
restart: no
depends_on: [ saver ]
tmpfs:
- /sqlite:uid=19664,gid=65533
- /tmp
differ:
image: ${CYBER_DOJO_DIFFER_IMAGE}:${CYBER_DOJO_DIFFER_TAG}
platform: linux/amd64
user: nobody
env_file: [ .env ]
read_only: true
tmpfs: /tmp
restart: no
dashboard:
image: ${CYBER_DOJO_DASHBOARD_IMAGE}:${CYBER_DOJO_DASHBOARD_TAG}
platform: linux/amd64
user: nobody
env_file: [ .env ]
read_only: true
restart: no
tmpfs: /tmp