-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose-api.yml
More file actions
136 lines (126 loc) · 3.54 KB
/
Copy pathdocker-compose-api.yml
File metadata and controls
136 lines (126 loc) · 3.54 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
services:
init-keyfile:
image: mongo:latest
container_name: init_keyfile
hostname: mongo
command: >
sh -c "
if [ ! -f /etc/mongodb/pki/keyfile ]; then
echo 'Generating keyfile...';
openssl rand -base64 756 > /etc/mongodb/pki/keyfile && chmod 400 /etc/mongodb/pki/keyfile;
else
echo 'Keyfile already exists.';
fi
"
volumes:
- mongo-keyfile-vol:/etc/mongodb/pki
networks:
- mongodb_network
restart: "no"
mongodb:
container_name: mongo
image: mongo:latest
hostname: mongo
ports:
- "27017:27017"
depends_on:
- init-keyfile
volumes:
- mongo-keyfile-vol:/etc/mongodb/pki
- mongodb-data:/data/db/
- mongodb-log:/var/log/mongodb/
command: |
bash -c '
mongod --replSet rs0 --bind_ip_all --port 27017 & MONGO_PID=$$!
until mongosh --port 27017 --eval "db.runCommand({ ping: 1 })" >/dev/null 2>&1; do
sleep 2
done
mongosh --port 27017 --eval "rs.initiate({_id: \"rs0\", members: [{_id: 0, host: \"mongodb:27017\"}]})"
sleep 5
mongosh --port 27017 --eval "
db = db.getSiblingDB(\"admin\");
db.createUser({
user: \"${MONGO_INITDB_ROOT_USERNAME}\",
pwd: \"${MONGO_INITDB_ROOT_PASSWORD}\",
roles: [{ role: \"root\", db: \"admin\" }]
});
"
kill $$MONGO_PID
wait $$MONGO_PID
exec mongod --replSet rs0 --bind_ip_all --port 27017 --keyFile /etc/mongodb/pki/keyfile
'
env_file:
- .env
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
MONGO_INITDB_DATABASE: waltid-enterprise
networks:
- mongodb_network
healthcheck:
test: [ "CMD-SHELL", "mongosh --username $$MONGO_INITDB_ROOT_USERNAME --password $$MONGO_INITDB_ROOT_PASSWORD --authenticationDatabase admin --eval 'db.runCommand({ping: 1})'" ]
interval: 10s
timeout: 5s
start_period: 10s
retries: 5
restart: unless-stopped
mongo-express:
image: mongo-express:latest
container_name: mongo-express
restart: always
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: ${MONGO_INITDB_ROOT_USERNAME}
ME_CONFIG_MONGODB_ADMINPASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_MONGODB_SERVER: mongo
ME_CONFIG_BASICAUTH_USERNAME: ${MONGO_EXPRESS_USERNAME}
ME_CONFIG_BASICAUTH_PASSWORD: ${MONGO_EXPRESS_PASSWORD}
ports:
- 8081:8081
networks:
- mongodb_network
depends_on:
mongodb:
condition: service_healthy
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile-api:/etc/caddy/Caddyfile
networks:
mongodb_network:
aliases:
- enterprise.localhost
- waltid.enterprise.localhost
depends_on:
- waltid-enterprise
waltid-enterprise:
image: waltid/waltid-enterprise-api:${ENTERPRISE_API_DOCKER_IMAGE_TAG}
# environment:
# - LOG_LEVEL=trace
ports:
- "7500:7500"
volumes:
- ./config:/config
networks:
- mongodb_network
depends_on:
mongodb:
condition: service_healthy
command: "--log-level=trace"
volumes:
mongo-keyfile-vol:
mongodb-data:
driver: local
name: mongo-data
mongodb-log:
driver: local
name: mongo-log
networks:
mongodb_network:
driver: bridge
name: mongo-network