forked from seek4science/seek
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
139 lines (132 loc) · 3.33 KB
/
Copy pathdocker-compose.yml
File metadata and controls
139 lines (132 loc) · 3.33 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
x-shared:
seek_base: &seek_base
# build: .
image: fairdom/seek:main
restart: always
environment: &seek_base_env
RAILS_ENV: production
SOLR_PORT: 8983
SOLR_HOST: solr
RAILS_LOG_LEVEL: info # debug, info, warn, error or fatal
env_file:
- docker/db.env
- docker/redis.env
volumes:
- seek-filestore:/seek/filestore
- seek-cache:/seek/tmp/cache
depends_on:
db:
condition: service_healthy
solr:
condition: service_healthy
redis_store:
condition: service_healthy
services:
db:
# Database implementation, in this case MySQL
image: mysql:8.4
container_name: seek-mysql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --log-error-verbosity=1
# Optional: Enable mysql_native_password if needed for legacy apps
# - --mysql-native-password=ON
# Optional: restrict foreign keys if needed
# - --restrict-fk-on-non-standard-key=OFF
restart: always
stop_grace_period: 1m30s
env_file:
- docker/db.env
volumes:
- seek-mysql-db:/var/lib/mysql
healthcheck:
test:
[
"CMD-SHELL",
"mysqladmin ping -h localhost -u $$MYSQL_USER -p$$MYSQL_PASSWORD --silent",
]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
redis_store:
image: redis:8.6-alpine
container_name: seek-redis
command:
- sh
- -c
- redis-server --appendonly yes --requirepass "$$REDIS_PASSWORD" --maxmemory "$$REDIS_MAXMEMORY" --maxmemory-policy allkeys-lru
env_file:
- docker/redis.env
volumes:
- seek-redis-data:/data
restart: always
healthcheck:
test:
[
"CMD-SHELL",
"redis-cli -a \"$$REDIS_PASSWORD\" ping | grep PONG"
]
interval: 5s
timeout: 3s
retries: 5
start_period: 20s
seek:
# The SEEK application
<<: *seek_base
container_name: seek
command: docker/entrypoint.sh
ports:
- "3000:3000"
environment:
<<: *seek_base_env
NO_ENTRYPOINT_WORKERS: 1
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/up"]
interval: 30s
timeout: 5s
retries: 5
start_period: 20s
seek_workers:
# The SEEK delayed job workers
<<: *seek_base
container_name: seek-workers
environment:
<<: *seek_base_env
QUIET_SUPERCRONIC: 1
command: docker/start_workers.sh
healthcheck:
test: ["CMD", "bash", "script/check_worker_pids.sh"]
retries: 5
solr:
image: solr:9.10.1
container_name: seek-solr
restart: always
environment:
SOLR_JAVA_MEM: -Xms512m -Xmx1024m
volumes:
- seek-solr-data:/var/solr/
- ./solr/seek/conf:/opt/solr/server/solr/configsets/seek_config/conf
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8983/solr/seek/admin/ping"]
interval: 30s
timeout: 5s
retries: 6
start_period: 30s
entrypoint:
- docker-entrypoint.sh
- solr-precreate
- seek
- /opt/solr/server/solr/configsets/seek_config
volumes:
seek-filestore:
external: true
seek-mysql-db:
external: true
seek-solr-data:
external: true
seek-cache:
external: true
seek-redis-data:
external: true