forked from Fellowmark/fellowmark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
129 lines (123 loc) · 3.74 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
version: "3.9"
services:
nginx:
image: nginx:alpine
container_name: reverse_proxy
restart: always
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- 80:80
profiles: ['prod', 'lb']
db:
image: postgres:13-alpine
env_file: ./.env
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DATABASE}
container_name: db
ports:
- '5432:5432'
volumes:
- dbdata:/var/lib/postgresql/data/
- ./dbscripts:/docker-entrypoint-initdb.d
profiles: ['api-dev', 'api-staging', 'api', 'dev', 'prod']
api-dev:
image: nus-utils/peer-review-api:dev
env_file: ./.env
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PORT=${POSTGRES_PORT}
- POSTGRES_DATABASE=${POSTGRES_DATABASE}
- JWT_SECRET=${JWT_SECRET}
- RUN_ENV=local
- ADMIN_NAME=admin
- ADMIN_PASSWORD=admin
build:
context: ./core/.
target: builder
volumes:
- ./core:/app
command: CompileDaemon --build="go build -o server" --command="./server"
container_name: api-dev
depends_on:
- db
ports:
- '5000:5000'
profiles: ['api-dev', 'dev']
api-staging:
image: nus-utils/peer-review-api:staging
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PORT=${POSTGRES_PORT}
- POSTGRES_DATABASE=${POSTGRES_DATABASE}
- JWT_SECRET=${JWT_SECRET}
- RUN_ENV=production
- ADMIN_NAME=admin
- ADMIN_PASSWORD=admin
build:
context: ./core/.
target: builder
volumes:
- ./core:/app
command: CompileDaemon --build="go build -o server" --command="./server"
container_name: api-dev
depends_on:
- db
ports:
- '5000:5000'
profiles: ['api-staging', 'staging']
api:
image: nus-utils/peer-review-api:latest
env_file: ./.env
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PORT=${POSTGRES_PORT}
- POSTGRES_DATABASE=${POSTGRES_DATABASE}
- JWT_SECRET=${JWT_SECRET}
- RUN_ENV=production
- ADMIN_NAME=admin
- ADMIN_PASSWORD=admin
build:
context: ./core/.
container_name: api
depends_on:
- db
ports:
- '5000:5000'
profiles: ['api', 'prod']
frontend-dev:
build:
context: ./frontend
target: copy
environment:
- REACT_APP_API_URL=http://localhost:5000
volumes:
- /app/node_modules
- ./frontend/src:/app/src
command: npm run start
ports:
- '3000:3000'
stdin_open: true
profiles: ['dev', 'frontend-dev']
frontend:
build:
context: ./frontend
args:
- REACT_APP_API_URL=${API_URL}
ports:
- '3000:3000'
stdin_open: true
profiles: ['prod', 'frontend']
volumes:
dbdata: