-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdocker-compose.yml
140 lines (123 loc) · 3.97 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
version: '3.8'
services:
# Nginx Server Acting as Load Balancer
nginx_server:
image: riteshsoni296/nginx_server:latest
depends_on:
- nodejs_application_server_1
- nodejs_application_server_2
restart: always
ports:
- "80:80"
environment:
NGINX_PORT: "80"
APPLICATION_SERVER_1: "nodejs_application_server_1"
APPLICATION_SERVER_2: "nodejs_application_server_2"
APPLICATION_SERVER_PORT: "3000"
volumes:
- logs_nginx:/var/log/nginx
networks:
- application_external_network
- application_internal_network
# Node 10 Application Server Application Server
nodejs_application_server_1:
image: riteshsoni296/nodejs_app:latest
volumes:
- application_code:/usr/src/app
restart: always
depends_on:
- mongo_db_server
networks:
- application_internal_network
- database_internal_network
nodejs_application_server_2:
image: riteshsoni296/nodejs_app:latest
volumes:
- application_code:/usr/src/app
restart: always
depends_on:
- mongo_db_server
networks:
- application_internal_network
- database_internal_network
# Nfs Server to share the Java Application Code in Tomcat Application Servers
nfs_server:
image: riteshsoni296/nfs_server:latest
privileged: "true"
volumes:
- nfs_storage:/nfsshare
restart: always
environment:
SHARED_DIRECTORY: /nfsshare
SHARED_DIRECTORY_2: /nfsshare/apps
SYNC: "true"
networks:
application_internal_network:
ipv4_address: 10.150.20.12
healthcheck:
test: ["CMD", "netstat", "-tnlp", "|grep", "2049"]
interval: 60s
timeout: 10s
retries: 5
# Mongo Database Server
mongo_db_server:
image: riteshsoni296/mongo_server:latest
environment:
MONGO_INITDB_ROOT_USERNAME: mongoadmin
MONGO_INITDB_ROOT_PASSWORD: admin
MONGO_INITDB_USERNAME: appuser
MONGO_INITDB_PASSWORD: app123
MONGO_INITDB_DATABASE: nodejsdemo
volumes:
- mongo_db_data:/data/db
- mongo_cluster:/data/configdb
networks:
- database_internal_network
- application_internal_network
# Network Definitions
networks:
database_internal_network:
driver: bridge
internal: "true"
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
- subnet: "10.120.20.0/24"
# Extenal Network for internet connectivity and requests from the internet
application_external_network:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
- subnet: "10.140.20.0/24"
# internal secured Network for Applications
application_internal_network:
driver: bridge
internal: "true"
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
- subnet: "10.150.20.0/24"
#Storage Volumes Definitions
volumes:
# Volume for Java Application Code
application_code:
driver: local
driver_opts:
type: "nfs4"
o: "addr=10.150.20.12,rw"
device: ":/apps"
mongo_db_data:
driver: local
mongo_cluster:
driver: local
logs_nginx:
driver: local
nfs_storage:
driver: local