-
Notifications
You must be signed in to change notification settings - Fork 1
/
docker-compose.yml
106 lines (99 loc) · 4.37 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
version: "3.8"
services:
postgres:
# we use prebuilt image as our base image (make sure you specify the same
# version to avoid any breaking changes that may come in later versions)
image: postgres:13.1
# setting the container name to avoid the default generated container name so that we can
# reference the container with their names as hosts form our codebase or from another containers
container_name: postgres
# we pass the environment variables defined in .env file without specifying the values
# and they will be passed as the same named variables and with the same values they have
environment:
- POSTGRES_USERNAME
- POSTGRES_PASSWORD
- POSTGRES_DB
# Enable port mapping from the container to the host so we can access the database on that port
ports:
- "5432:5432"
# Add a named mount volume to persist the database data after container restarted or stopped.
# Also, we need to make sure that the volume mount point is `/var/lib/postgresql/data`
# because it's where the postgres store its data
volumes:
- database-data:/var/lib/postgresql/data
frontend:
build:
context: ./udagram-frontend/
# setting the container name to avoid the default generated container name so that we can
# reference the container with their names as hosts form our codebase or from another containers
container_name: frontend
# Enable port mapping from the container to the host so we can access the frontend on that port
ports:
- "${FRONTEND_PORT}:${FRONTEND_PORT}"
# we pass the environment variables defined in .env file without specifying the values
# and they will be passed as the same named variables and with the same values they have
environment:
- FRONTEND_PORT
users-microservice:
build:
context: ./udagram-api/users-microservice
# setting the container name to avoid the default generated container name so that we can
# reference the container with their names as hosts form our codebase or from another containers
container_name: users-microservice
# Enable port mapping from the container to the host so we can access the frontend on that port
ports:
- "8282:${BACKEND_PORT}"
# we pass the environment variables defined in .env file without specifying the values
# and they will be passed as the same named variables and with the same values they have
environment:
- POSTGRES_USERNAME
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_HOST
- AWS_BUCKET
- AWS_REGION
- AWS_PROFILE
- JWT_SECRET
- URL
- BACKEND_PORT
feed-microservice:
build:
context: ./udagram-api/feed-microservice
# setting the container name to avoid the default generated container name so that we can
# reference the container with their names as hosts form our codebase or from another containers
container_name: feed-microservice
# Enable port mapping from the container to the host so we can access the frontend on that port
ports:
- "8383:${BACKEND_PORT}"
# we pass the environment variables defined in .env file without specifying the values
# and they will be passed as the same named variables and with the same values they have
environment:
- POSTGRES_USERNAME
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_HOST
- AWS_BUCKET
- AWS_REGION
- AWS_PROFILE
- JWT_SECRET
- URL
- BACKEND_PORT
# we bind the .aws/credentials directory as a mounted bind volume in order for the backend
# API node app to work properly with AWS S3 (and other services later)
volumes:
- $HOME/.aws/credentials:/root/.aws/credentials
reverse-proxy:
build:
context: ./reverse-proxy/
# setting the container name to avoid the default generated container name so that we can
# reference the container with their names as hosts form our codebase or from another containers
container_name: reverse-proxy
# Enable port mapping from the container to the host so we can access the backend on that port
ports:
- "${NGINX_PROXY_PORT}:${NGINX_PROXY_PORT}"
# we pass the environment variables defined in .env file without specifying the values
# and they will be passed as the same named variables and with the same values they have
environment:
- NGINX_PROXY_PORT
volumes:
database-data: