# Multiple Sites
TIP
This cookbook supposes the usage of docker-compose.
# Overview
This chapter introduces how to launch three GROWI sites.
# Build Image
git clone https://github.com/weseek/growi-docker-compose.git growi
cd growi
docker build -t growimulti_app .
# Replace docker-compose.yml
Edit ./docker-compose.yml
and duplicate the app container and volumes. On this example, these GROWI apps share the use of one Mongo DB contatiner and one Elasticsearch container for saving of resources.
...
services:
app-1:
# Specify the image built in the previous step
image: "growimulti_app:latest"
ports:
- 127.0.0.1:3001:3000
links:
- mongo:mongo
- elasticsearch:elasticsearch
depends_on:
- mongo
- elasticsearch
environment:
# Use the same paths for app-1 in MONGO_URI and ELASTICSEARCH_URI
- MONGO_URI=mongodb://mongo:27017/growi-1
- ELASTICSEARCH_URI=http://elasticsearch:9200/growi-1
- PASSWORD_SEED=changeme
command: "dockerize
-wait tcp://mongo:27017
-wait tcp://elasticsearch:9200
-timeout 60s
npm run server:prod"
restart: unless-stopped
volumes:
- growi_data_1:/data
app-2:
# Specify the image built in the previous step
image: "growimulti_app:latest"
ports:
- 127.0.0.1:3002:3000
links:
- mongo:mongo
- elasticsearch:elasticsearch
depends_on:
- mongo
- elasticsearch
environment:
# Use the same paths for app-2 in MONGO_URI and ELASTICSEARCH_URI
- MONGO_URI=mongodb://mongo:27017/growi-2
- ELASTICSEARCH_URI=http://elasticsearch:9200/growi-2
- PASSWORD_SEED=changeme
command: "dockerize
-wait tcp://mongo:27017
-wait tcp://elasticsearch:9200
-timeout 60s
npm run server:prod"
restart: unless-stopped
volumes:
- growi_data_2:/data
app-3:
# Specify the image built in the previous step
image: "growimulti_app:latest"
ports:
- 127.0.0.1:3003:3000
links:
- mongo:mongo
- elasticsearch:elasticsearch
depends_on:
- mongo
- elasticsearch
environment:
# Use the same paths for app-3 in MONGO_URI and ELASTICSEARCH_URI
- MONGO_URI=mongodb://mongo:27017/growi-3
- ELASTICSEARCH_URI=http://elasticsearch:9200/growi-3
- PASSWORD_SEED=changeme
command: "dockerize
-wait tcp://mongo:27017
-wait tcp://elasticsearch:9200
-timeout 60s
npm run server:prod"
restart: unless-stopped
volumes:
- growi_data_3:/data
...
volumes:
# Write the volumes each GROWI uses
growi_data_1:
growi_data_2:
growi_data_3:
...
# Start
Execute this command and access to each site.
docker-compose up
and access to:
http://localhost:3001 (opens new window) (app-1)
http://localhost:3002 (opens new window) (app-2)
http://localhost:3003 (opens new window) (app-3)
# Upgrade
# Stop
docker-compose stop
# Remove app containers and images
docker-compose rm app-1
docker-compose rm app-2
docker-compose rm app-3
docker rmi growimulti_app
docker rmi weseek/growi:3
# Rebuild Image
git pull
docker build -t growimulti_app .
# Start
docker-compose up