-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
156 lines (150 loc) · 6.18 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# เวอร์ชั่น docker compose ที่ใช้ในการ build
version: '3.8'
# service ที่ทั้งหมดที่ใช้
services:
# pg database
postgreSql:
# เมื่อ container มีการเปลียนแปลงให้ restart ตลอด
restart: always
# os ที่ต้องการใช้ใน container
platform: linux/x86_64
# ชื่อ container
container_name: locker-postgresdb
# iamge ที่ใช้ image สามารถดูจาก docker hub ได้
image: postgres:latest
# การ map port ระหว่าง container กับ public port ex -> public:contailner
ports:
- 5432:5432
# การ map volumes ระหว่าง container กับ project ex -> porject path:contailner path
# ประโยชน์ เมื่อมีการเปลี่ยน code ใน path ของ project ใน container จะเปลียนตามไปด้วย
volumes:
- .docker/postgreSql:/var/lib/postgresql/data
# env ของ pg database
environment:
- POSTGRES_PASSWORD=root
- POSTGRES_USER=root
- POSTGRES_DB=LockerDB
# การ set network ให้ container
networks:
- backend
# การทำ condition ว่า image ว่า service สามารถทำงานได้
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
interval: 10s
timeout: 5s
retries: 5
# redis server
redis:
# เมื่อ container มีการเปลียนแปลงให้ restart ตลอด
restart: always
# os ที่ต้องการใช้ใน containerx
platform: linux/x86_64
# iamge ที่ใช้ image สามารถดูจาก docker hub ได้
image: redis:latest
# ชื่อ container
container_name: BookingOasis-redisServer
# การ map port ระหว่าง container กับ public port ex -> public:contailner
ports:
- 6379:6379
# การ map volumes ระหว่าง container กับ project ex -> porject path:contailner path
# ประโยชน์ เมื่อมีการเปลี่ยน code ใน path ของ project ใน container จะเปลียนตามไปด้วย
volumes:
- .docker/redis:/db
# การ set network ให้ container
networks:
- oasisNetwork
# การทำ condition ว่า image ว่า service สามารถทำงานได้
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 1s
timeout: 5s
retries: 10
# redis gui
redis_insight:
# os ที่ต้องการใช้ใน container
platform: linux/x86_64
# iamge ที่ใช้ image สามารถดูจาก docker hub ได้
image: redislabs/redisinsight:1.14.0
# ชื่อ container
container_name: redis_insight_of_bookingOasis
# เมื่อ container มีการเปลียนแปลงให้ restart ตลอด
restart: always
# การ map port ระหว่าง container กับ public port ex -> public:contailner
ports:
- 8001:8001
# การ map volumes ระหว่าง container กับ project ex -> porject path:contailner path
# ประโยชน์ เมื่อมีการเปลี่ยน code ใน path ของ project ใน container จะเปลียนตามไปด้วย
volumes:
- .docker/redisinsight:/db
# การ set network ให้ container
networks:
- oasisNetwork
# depends_on คือการทำให้ 2 service ใช้งานร่วมกันได้
depends_on:
- redis
# frontend container
frontend:
restart: always
platform: linux/x86_64
container_name: BookingOasis-frontend
build: ./frontend
ports:
- '5173:5173'
# run คำสั่งที่ต้องการ
command: npm run dev
develop:
watch:
- action: sync
path: ./frontend
target: /app
ignore:
- node_modules/
- action: rebuild
path: package.json
# การ map volumes ระหว่าง container กับ project ex -> porject path:contailner path
# ประโยชน์ เมื่อมีการเปลี่ยน code ใน path ของ project ใน container จะเปลียนตามไปด้วย
volumes:
- ./frontend/:/app
- /app/node_modules
networks:
- oasisNetwork
environment:
- CHOKIDAR_USEPOLLING=true #เพื่อการ docker auto run ในระบบที่ไม่รองรับ inotify เช่น Windows
- WATCHPACK_POLLING=true #ใช้เพื่อสั่งให้ Watchpack ใช้ polling แทนระบบ inotify ที่ไม่รองรับ Docker ใน Windows
backend:
restart: always
platform: linux/x86_64
container_name: BookingOasis-backend
build: ./backend
ports:
- '3000:3000'
command: npm run dev
develop:
watch:
- action: sync
path: ./backend
target: /app
ignore:
- node_modules/
- action: rebuild
path: package.json
# การ map volumes ระหว่าง container กับ project ex -> porject path:contailner path
# ประโยชน์ เมื่อมีการเปลี่ยน code ใน path ของ project ใน container จะเปลียนตามไปด้วย
volumes:
- ./backend/:/app
- /app/node_modules
# การ set env ของ node
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
networks:
- oasisNetwork
# depends_on คือการทำให้ 2 service ใช้งานร่วมกันได้
depends_on:
redis:
condition: service_healthy
postgreSql:
condition: service_healthy
networks:
oasisNetwork:
driver: bridge