-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yml
134 lines (124 loc) · 3.13 KB
/
docker-compose.yml
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
services:
django: &django
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: classlab_local_django
container_name: classlab_local_django
depends_on:
- postgres
- redis
- mailpit
- k8s
volumes:
- .:/app:z
- ./kubeconfig:/kube/config
environment:
- USE_DOCKER=yes
- PYTHONDEVMODE=1
- IPYTHONDIR=/app/.ipython
- REDIS_URL=redis://redis:6379/0
- CELERY_BROKER_URL=redis://redis:6379/0
- CELERY_FLOWER_USER=debug
- CELERY_FLOWER_PASSWORD=debug
- PROXY_DOMAIN=apps.classlab.localhost
- DATABASE_URL=postgres://postgres:postgres@postgres:5432/classlab
- KUBECONFIG=/kube/config
- PROMETHEUS_URL=http://host.docker.internal:9090
ports:
- "8000:8000"
command: /start
postgres:
image: postgres:16
container_name: classlab_local_postgres
environment:
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
- POSTGRES_DB=classlab
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
ports:
- "5432:5432"
mailpit:
image: docker.io/axllent/mailpit:latest
container_name: classlab_local_mailpit
ports:
- "8025:8025"
redis:
image: redis:6
container_name: classlab_local_redis
celeryworker:
<<: *django
image: classlab_local_celeryworker
container_name: classlab_local_celeryworker
depends_on:
- redis
- postgres
- mailpit
ports: []
command: /start-celeryworker
celerybeat:
<<: *django
image: classlab_local_celerybeat
container_name: classlab_local_celerybeat
depends_on:
- redis
- postgres
- mailpit
ports: []
command: /start-celerybeat
flower:
<<: *django
image: classlab_local_flower
container_name: classlab_local_flower
ports:
- "5555:5555"
command: /start-flower
k8s:
image: rancher/k3s:v1.31.0-k3s1
container_name: classlab_local_k8s
command: server --tls-san k8s --secrets-encryption
tmpfs:
- /run
- /var/run
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
privileged: true
environment:
- K3S_TOKEN=token
- K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml
- K3S_KUBECONFIG_MODE=666
volumes:
- k8s-dev:/var/lib/rancher/k3s
- .:/output
ports:
- 6443:6443 # Kubernetes API Server
- 80:80 # Ingress controller port 80
- 443:443 # Ingress controller port 443
- 9090:30090 # Prometheus
init-k8s-kubeconfig:
image: busybox
container_name: classlab_local_init_k8s_kubeconfig
depends_on:
- k8s
volumes:
- .:/app:z
command: >
/bin/sh -c "cp /app/kubeconfig.yaml /app/kubeconfig &&
sed -i 's/127.0.0.1/k8s/g' /app/kubeconfig"
init-k8s-helm:
image: chatwork/helmfile
container_name: classlab_local_init_k8s_helm
depends_on:
- k8s
volumes:
- .:/app:z
command: --kubeconfig /app/kubeconfig --file /app/helmfile.yaml sync
volumes:
k8s-dev: