-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
87 lines (87 loc) · 2.72 KB
/
Copy pathdocker-compose.yml
File metadata and controls
87 lines (87 loc) · 2.72 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
services:
postgres:
image: postgres:18.3-alpine
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- pgdata:/var/lib/postgresql/18/docker
redis:
image: redis:8-alpine
restart: always
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 1s
timeout: 1s
retries: 20
environment:
REDIS_USER: ${REDIS_USER}
REDIS_PASSWORD: ${REDIS_PASSWORD}
REDIS_USER_PASSWORD: ${REDIS_USER_PASSWORD}
command: >
sh -c '
mkdir -p /usr/local/etc/redis &&
echo "bind 0.0.0.0" > /usr/local/etc/redis/redis.conf &&
echo "requirepass $REDIS_PASSWORD" >> /usr/local/etc/redis/redis.conf &&
echo "appendonly yes" >> /usr/local/etc/redis/redis.conf &&
echo "appendfsync everysec" >> /usr/local/etc/redis/redis.conf &&
echo "user default on nopass ~* +@all" > /usr/local/etc/redis/users.acl &&
echo "user $REDIS_USER on >$REDIS_USER_PASSWORD ~* +@all" >> /usr/local/etc/redis/users.acl &&
redis-server /usr/local/etc/redis/redis.conf --aclfile /usr/local/etc/redis/users.acl
'
volumes:
- redisdata:/data
sandbox:
build: ./containers/sandbox
submissions-judger:
build:
dockerfile: ./containers/app/Dockerfile
context: .
target: submissions-judger
deploy:
replicas: ${WORKERS_COUNT}
depends_on:
postgres:
condition: service_started
redis:
condition: service_healthy
sandbox:
condition: service_started
environment:
POSTGRES_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
REDIS_URL: redis://${REDIS_USER}:${REDIS_USER_PASSWORD}@redis:6379/0
HOST_RUNS_DIR: ${PWD}
SANDBOX_IMAGE: ada-judge-sandbox
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./submissions_envs:/submissions_envs
- ./problems:/problems
main:
build:
dockerfile: ./containers/app/Dockerfile
context: .
target: main
depends_on:
postgres:
condition: service_started
redis:
condition: service_healthy
sandbox:
condition: service_started
environment:
POSTGRES_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
REDIS_URL: redis://${REDIS_USER}:${REDIS_USER_PASSWORD}@redis:6379/0
HOST_RUNS_DIR: ${PWD}
JWT_SECRET: ${JWT_SECRET}
JWT_EXP_HOURS: ${JWT_EXP_HOURS}
ports:
- "4444:4444"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./submissions_envs:/submissions_envs
- ./problems:/problems
volumes:
pgdata:
redisdata: