-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yaml
115 lines (105 loc) · 2.94 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
version: "3"
services:
job-runner:
build:
context: ./go-job-runner
dockerfile: Dockerfile
restart: always
depends_on:
- postgres
- rabbitmq
ports:
- 4001:4001
environment:
- GIN_MODE=release
volumes:
- ./go-job-runner/docker.yml:/out/config.yml
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4001/health"]
interval: 10s
timeout: 5s
retries: 5
job-worker:
build:
context: ./go-job-worker
dockerfile: Dockerfile
restart: always
depends_on:
- rabbitmq
volumes:
- ./go-job-worker/docker.yml:/out/config.yml
postgres:
image: postgres:15
restart: always
ports:
- 5432:5432
environment:
POSTGRES_USER: username
POSTGRES_PASSWORD: password
POSTGRES_DB: db
volumes:
- db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "username"]
interval: 10s
timeout: 5s
retries: 5
flyway:
image: flyway/flyway
restart: on-failure
depends_on:
- postgres
volumes:
- ./go-job-runner/sql:/flyway/sql
environment:
- FLYWAY_URL=jdbc:postgresql://postgres:5432/db
- FLYWAY_USER=username
- FLYWAY_PASSWORD=password
- FLYWAY_SCHEMAS=public
- FLYWAY_LOCATIONS=filesystem:/flyway/sql
command: info repair migrate validate
rabbitmq:
image: rabbitmq:3.8-management
restart: always
ports:
- 5672:5672
- 15672:15672
environment:
RABBITMQ_DEFAULT_USER: username
RABBITMQ_DEFAULT_PASS: password
volumes:
- rabbitmq-data:/var/lib/rabbitmq
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 10s
timeout: 5s
retries: 5
rabbitmqctl:
image: rabbitmq:3.8-management
restart: on-failure
depends_on:
- rabbitmq
environment:
RABBITMQ_USER: username
RABBITMQ_PASS: password
RABBITMQ_HOST: rabbitmq
command: |
/bin/bash -c
"
rabbitmqadmin declare exchange name=jobs type=direct --host=rabbitmq --username=username --password=password &&
rabbitmqadmin declare exchange name=job-events type=direct --host=rabbitmq --username=username --password=password &&
rabbitmqadmin declare queue name=job-events --host=rabbitmq --username=username --password=password &&
rabbitmqadmin declare queue name=random-worker --host=rabbitmq --username=username --password=password &&
rabbitmqadmin declare binding source=job-events destination=job-events routing_key=event --host=rabbitmq --username=username --password=password &&
rabbitmqadmin declare binding source=jobs destination=random-worker routing_key=worker.random --host=rabbitmq --username=username --password=password
"
adminer:
image: adminer
restart: always
depends_on:
- postgres
ports:
- 8080:8080
volumes:
db-data:
rabbitmq-data: