Deploy 2 data center nodes of Jira in docker

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.

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Leave a Reply

%d bloggers like this:

Spelling error report

The following text will be sent to our editors: