-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
docker-compose.yaml
159 lines (148 loc) · 4.33 KB
/
docker-compose.yaml
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
# Docker Compose file for our Authentication application
#
# Install Docker on your system to run and test
# the app in a production-like environment.
#
# Note: This file is intended for testing and does not
# implement best practices for a production deployment.
# If I were you, I would just normally install these services on a Linux machine.
# Such as: Fail2Ban, CrowdSec, Postgres, Nginx, SuperTokens, and Redis.
# View .env.example before deploying.
#
# Learn more: https://docs.docker.com/compose/reference/
#
# Build images: docker-compose build
# Start app: docker-compose up -d
#
# Rapidfort images are used because of their smaller sizes, even compared to standard Alpine images
version: '3'
services:
db:
container_name: supertokens_db
image: rapidfort/postgresql-official:latest
environment:
POSTGRES_USER: supertokens_user
POSTGRES_PASSWORD: CHANGE_ME_PLEASE_OR_I_WILL_CRY
POSTGRES_DB: supertokens
ports:
- 5432:5432
volumes:
- ./scripts/init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
restart: unless-stopped
healthcheck:
test: ['CMD', 'pg_isready -U supertokens_user']
interval: 5s
timeout: 5s
retries: 5
db2:
container_name: prisma_db
image: rapidfort/postgresql-official:latest
environment:
POSTGRES_USER: prisma_user
POSTGRES_PASSWORD: CHANGE_ME_PLEASE_OR_I_WILL_CRY
POSTGRES_DB: prisma
ports:
- 5433:5432
volumes:
- ./scripts/init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
restart: unless-stopped
healthcheck:
test: ['CMD', 'pg_isready -U supertokens_user']
interval: 5s
timeout: 5s
retries: 5
supertokens:
image: registry.supertokens.io/supertokens/supertokens-postgresql
network_mode: 'host' # Use host network mode
depends_on:
- db
ports:
- 3567:3567
environment:
POSTGRESQL_USER: supertokens_user
POSTGRESQL_HOST: localhost
POSTGRESQL_PORT: 5432
API_KEYS: ${SUPERTOKENS_API_KEY}
POSTGRESQL_PASSWORD: ${DB_PASSWORD:-CHANGE_ME_PLEASE_OR_I_WILL_CRY}
POSTGRESQL_DATABASE_NAME: supertokens
restart: unless-stopped
healthcheck:
test: >
bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"'
interval: 10s
timeout: 5s
retries: 5
authapp:
container_name: authapp
network_mode: 'host' # Use host network mode
build: ./
depends_on:
- redis
# - chatbackend
# - supertokens
ports:
- 3000:3000
- 8000:8000
environment:
NODE_ENV: production
CI: 'true'
LOGGER: true
REDIS_URL: redis://:${REDIS_PASSWORD:-VERY_SECURE_PASSWORD_THAT_SHOULD_OF_BEEN_GENERATED_WITH_32_CHARACTERS_OR_SOMETHING}@localhost:6379
restart: unless-stopped
healthcheck:
test: >
bash -c 'pnpm -r healthcheck '
interval: 10s
timeout: 5s
retries: 5
volumes:
- ./scripts/run-migrations.sh:/docker-entrypoint-initdb.d/run-migrations.sh
# nginx:
# build: ./Nginx
# ports:
# - 80:80
# - 4443:4443
# networks:
# - app_network
# restart: unless-stopped
# volumes:
# - /Nginx/config:/etc/nginx/
# - /Nginx/logs:/var/log/nginx
# - /Nginx/nginx.service:/etc/systemd/system/nginx.service
# # healthcheck:
# # test: >
# # bash -c 'service nginx status || exit 1'
# # interval: 10s
# # timeout: 5s
# # retries: 5
# fail2ban:
# image: lscr.io/linuxserver/fail2ban:latest
# restart: always
# depends_on:
# - nginx
# cap_add:
# - NET_ADMIN
# - NET_RAW
# ports:
# - '6379:6379'
# volumes:
# - /Fail2Ban/config:/config
# - /Nginx/logs:/remotelogs/nginx:ro #optional
# networks:
# - app_network
redis:
container_name: redis
image: chainguard/valkey:latest
restart: always
ports:
- '6379:6379'
command: redis-server --save 20 1 --loglevel warning --requirepass ${REDIS_PASSWORD:-VERY_SECURE_PASSWORD_THAT_SHOULD_OF_BEEN_GENERATED_WITH_32_CHARACTERS_OR_SOMETHING}
healthcheck:
test: >
bash -c 'redis-cli ping | grep PONG'
interval: 1s
timeout: 5s
retries: 5
volumes:
cache:
driver: local