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'<br data-rich-text-line-break="true"><br data-rich-text-line-break="true">services:<br data-rich-text-line-break="true"> jira_node_1:<br data-rich-text-line-break="true"> depends_on:<br data-rich-text-line-break="true"> - postgresql<br data-rich-text-line-break="true"> image: atlassian/jira-software:latest<br data-rich-text-line-break="true"> networks:<br data-rich-text-line-break="true"> - jiranet<br data-rich-text-line-break="true"> volumes:<br data-rich-text-line-break="true"> - /Users/alexm/projects/prometheus/shared:/var/atlassian/application-data/jira/shared<br data-rich-text-line-break="true"> ports:<br data-rich-text-line-break="true"> - '8080:8080'<br data-rich-text-line-break="true"> - '8000:8000'<br data-rich-text-line-break="true"> environment:<br data-rich-text-line-break="true"> - 'ATL_JDBC_URL=jdbc:postgresql://postgresql:5432/jiradb'<br data-rich-text-line-break="true"> - 'ATL_JDBC_USER=jira'<br data-rich-text-line-break="true"> - 'ATL_JDBC_PASSWORD=jellyfish'<br data-rich-text-line-break="true"> - 'ATL_DB_DRIVER=org.postgresql.Driver'<br data-rich-text-line-break="true"> - 'ATL_DB_TYPE=postgres72'<br data-rich-text-line-break="true"> - 'JVM_MINIMUM_MEMORY=2048m'<br data-rich-text-line-break="true"> - 'JVM_MAXIMUM_MEMORY=4096m'<br data-rich-text-line-break="true"> - 'JVM_SUPPORT_RECOMMENDED_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000"'<br data-rich-text-line-break="true"> - 'CLUSTERED=true'<br data-rich-text-line-break="true"> - 'JIRA_NODE_ID=node_1'<br data-rich-text-line-break="true"> logging:<br data-rich-text-line-break="true"> # limit logs retained on host to 25MB<br data-rich-text-line-break="true"> driver: "json-file"<br data-rich-text-line-break="true"> options:<br data-rich-text-line-break="true"> max-size: "500k"<br data-rich-text-line-break="true"> max-file: "50"<br data-rich-text-line-break="true"><br data-rich-text-line-break="true"> jira_node_2:<br data-rich-text-line-break="true"> depends_on:<br data-rich-text-line-break="true"> - postgresql<br data-rich-text-line-break="true"> image: atlassian/jira-software:latest<br data-rich-text-line-break="true"> networks:<br data-rich-text-line-break="true"> - jiranet<br data-rich-text-line-break="true"> volumes:<br data-rich-text-line-break="true"> - /Users/alexm/projects/prometheus/shared:/var/atlassian/application-data/jira/shared<br data-rich-text-line-break="true"> ports:<br data-rich-text-line-break="true"> - '8081:8080'<br data-rich-text-line-break="true"> - '8001:8000'<br data-rich-text-line-break="true"> environment:<br data-rich-text-line-break="true"> - 'ATL_JDBC_URL=jdbc:postgresql://postgresql:5432/jiradb'<br data-rich-text-line-break="true"> - 'ATL_JDBC_USER=jira'<br data-rich-text-line-break="true"> - 'ATL_JDBC_PASSWORD=jellyfish'<br data-rich-text-line-break="true"> - 'ATL_DB_DRIVER=org.postgresql.Driver'<br data-rich-text-line-break="true"> - 'ATL_DB_TYPE=postgres72'<br data-rich-text-line-break="true"> - 'JVM_MINIMUM_MEMORY=2048m'<br data-rich-text-line-break="true"> - 'JVM_MAXIMUM_MEMORY=4096m'<br data-rich-text-line-break="true"> - 'JVM_SUPPORT_RECOMMENDED_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000"'<br data-rich-text-line-break="true"> - 'CLUSTERED=true'<br data-rich-text-line-break="true"> - 'JIRA_NODE_ID=node_2'<br data-rich-text-line-break="true"> logging:<br data-rich-text-line-break="true"> # limit logs retained on host to 25MB<br data-rich-text-line-break="true"> driver: "json-file"<br data-rich-text-line-break="true"> options:<br data-rich-text-line-break="true"> max-size: "500k"<br data-rich-text-line-break="true"> max-file: "50"<br data-rich-text-line-break="true"><br data-rich-text-line-break="true"> postgresql:<br data-rich-text-line-break="true"> image: postgres:9.5-alpine<br data-rich-text-line-break="true"> networks:<br data-rich-text-line-break="true"> - jiranet<br data-rich-text-line-break="true"> volumes:<br data-rich-text-line-break="true"> - postgresqldata:/var/lib/postgresql/data<br data-rich-text-line-break="true"> ports:<br data-rich-text-line-break="true"> - '5432:5432'<br data-rich-text-line-break="true"> environment:<br data-rich-text-line-break="true"> - 'POSTGRES_USER=jira'<br data-rich-text-line-break="true"> # CHANGE THE PASSWORD!<br data-rich-text-line-break="true"> - 'POSTGRES_PASSWORD=jellyfish'<br data-rich-text-line-break="true"> - 'POSTGRES_DB=jiradb'<br data-rich-text-line-break="true"> - 'POSTGRES_ENCODING=UNICODE'<br data-rich-text-line-break="true"> - 'POSTGRES_COLLATE=C'<br data-rich-text-line-break="true"> - 'POSTGRES_COLLATE_TYPE=C'<br data-rich-text-line-break="true"> logging:<br data-rich-text-line-break="true"> # limit logs retained on host to 25MB<br data-rich-text-line-break="true"> driver: "json-file"<br data-rich-text-line-break="true"> options:<br data-rich-text-line-break="true"> max-size: "500k"<br data-rich-text-line-break="true"> max-file: "50"<br data-rich-text-line-break="true"><br data-rich-text-line-break="true">volumes:<br data-rich-text-line-break="true"> postgresqldata:<br data-rich-text-line-break="true"> external: false<br data-rich-text-line-break="true"><br data-rich-text-line-break="true">networks:<br data-rich-text-line-break="true"> jiranet:<br data-rich-text-line-break="true"> 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.