Hello!
In this article I will show you how you can deploy 2 data center nodes of Jira Software in your local environments using the docker image provided by Atlassian.
This deployment will not include the load balancer because I need these nodes for app development to check if my app works properly in Data Center environment. That is why I always connect to a certain node.
First, you need to create this docker-compose.yml file:
version: '3'
services:
jira_node_1:
depends_on:
- postgresql
image: atlassian/jira-software:latest
networks:
- jiranet
volumes:
- /Users/alexm/projects/prometheus/shared:/var/atlassian/application-data/jira/shared
ports:
- '8080:8080'
- '8000:8000'
environment:
- 'ATL_JDBC_URL=jdbc:postgresql://postgresql:5432/jiradb'
- 'ATL_JDBC_USER=jira'
- 'ATL_JDBC_PASSWORD=jellyfish'
- 'ATL_DB_DRIVER=org.postgresql.Driver'
- 'ATL_DB_TYPE=postgres72'
- 'JVM_MINIMUM_MEMORY=2048m'
- 'JVM_MAXIMUM_MEMORY=4096m'
- 'JVM_SUPPORT_RECOMMENDED_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000"'
- 'CLUSTERED=true'
- 'JIRA_NODE_ID=node_1'
logging:
# limit logs retained on host to 25MB
driver: "json-file"
options:
max-size: "500k"
max-file: "50"
jira_node_2:
depends_on:
- postgresql
image: atlassian/jira-software:latest
networks:
- jiranet
volumes:
- /Users/alexm/projects/prometheus/shared:/var/atlassian/application-data/jira/shared
ports:
- '8081:8080'
- '8001:8000'
environment:
- 'ATL_JDBC_URL=jdbc:postgresql://postgresql:5432/jiradb'
- 'ATL_JDBC_USER=jira'
- 'ATL_JDBC_PASSWORD=jellyfish'
- 'ATL_DB_DRIVER=org.postgresql.Driver'
- 'ATL_DB_TYPE=postgres72'
- 'JVM_MINIMUM_MEMORY=2048m'
- 'JVM_MAXIMUM_MEMORY=4096m'
- 'JVM_SUPPORT_RECOMMENDED_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000"'
- 'CLUSTERED=true'
- 'JIRA_NODE_ID=node_2'
logging:
# limit logs retained on host to 25MB
driver: "json-file"
options:
max-size: "500k"
max-file: "50"
postgresql:
image: postgres:9.5-alpine
networks:
- jiranet
volumes:
- postgresqldata:/var/lib/postgresql/data
ports:
- '5432:5432'
environment:
- 'POSTGRES_USER=jira'
# CHANGE THE PASSWORD!
- 'POSTGRES_PASSWORD=jellyfish'
- 'POSTGRES_DB=jiradb'
- 'POSTGRES_ENCODING=UNICODE'
- 'POSTGRES_COLLATE=C'
- 'POSTGRES_COLLATE_TYPE=C'
logging:
# limit logs retained on host to 25MB
driver: "json-file"
options:
max-size: "500k"
max-file: "50"
volumes:
postgresqldata:
external: false
networks:
jiranet:
driver: bridge
Change '/Users/alexm/projects/prometheus/shared' to the folder path where all shared data for your nodes should be placed.
Move to the folder where you created the file and run it with this command:
docker-compose up
As a result you will have two Jira Software nodes up. Node_1 will be running on port 8080 and Node_2 will be running on port 8081.
Also you will be able to connect with a debug session to the nodes using ports 8000 for node_1 and 8001 for node_2.
If you have problem with including the second node to the cluster just restart the container with the second node.
Alexey Matveev
software developer
MagicButtonLabs
Philippines
1,575 accepted answers
4 comments