Deploying with Docker

This guide describes how to deploy the OSLC Connect for Jira Cloud Broker using Docker containers. The Docker deployment includes a PostgreSQL database container, so no separate database installation is required.

Prerequisites

Files to Transfer

You need to transfer the following files to your deployment server:

  1. deploy.sh - Deployment script
  2. oslc-connect-jira_1.0.0.tar.gz - Configuration package (docker-compose.yml, .env, etc.)
  3. oslc-connect-jira_1.0.0-image.tar.gz - Pre-built Docker image
  4. jiracloudbroker.keystore - SSL certificate keystore

Quick Deployment

1. Transfer Files to Server

# Create deployment directory on server
ssh user@your_server "mkdir -p ~/oslc-jira"

# Transfer files
scp deploy.sh oslc-connect-jira_1.0.0*.tar.gz jiracloudbroker.keystore user@your_server:~/oslc-jira/

2. Configuration

# Connect to server
ssh user@your_server
cd ~/oslc-jira

# Make script executable
chmod +x deploy.sh

# Extract config
./deploy.sh extract

After extraction, edit the .env file to configure your deployment:

# Tomcat Configuration
TOMCAT_PORT=your_tomcat_port

# Broker configuration
BROKER_HOST=your_broker_host

# PostgreSQL Configuration
DB_HOST=your_database_host
DB_PORT=your_database_port
DB_NAME=your_database_name
DB_USER=your_database_user
DB_PASSWORD=your_secure_password

# SSL Keystore Configuration
KEYSTORE_PATH=path_your_keystore
KEYSTORE_ALIAS=your_keystore_alias
KEYSTORE_PASSWORD=your_keystore_password

# Jira Cloud Configuration (from OAuth Integration App)
CLOUD_HOST=company.atlassian.net
CLOUD_ID=your_oauth_client_id
CLOUD_SECRET=your_oauth_client_secret

3. Deploy

# Deploy (loads image, starts services)
./deploy.sh

The deployment script will:

Available Commands

# Deploy the application
./deploy.sh

# Start services (if stopped)
./deploy.sh start

# Stop services
./deploy.sh stop

# Restart services
./deploy.sh restart

# View logs in real-time
./deploy.sh logs

# View container status
./deploy.sh status

# Create a manual database backup
./deploy.sh backup

# List all backups
./deploy.sh list-backups

# Restore from backup
./deploy.sh restore backups/backup_YYYYMMDD_HHMMSS.sql.gz

# Setup automatic weekly backups
./deploy.sh setup-backup

Verify Deployment

# Check container status
./deploy.sh status

# Expected output:
# NAME        IMAGE                      STATUS        PORTS
# postgres    postgres:18                Up            0.0.0.0:5432->5432/tcp
# tomcat      oslc-connect-jira:1.0.0    Up            0.0.0.0:8443->8443/tcp

# Check logs
./deploy.sh logs

The application is available at: https://your-server:8443/oslc-connect-jira

Database Backups

The deployment script includes built-in backup and restore functionality:

# Setup automatic weekly backups (recommended)
./deploy.sh setup-backup

# Create manual backup
./deploy.sh backup

# List available backups
./deploy.sh list-backups

# Restore from backup (drops and recreates database)
./deploy.sh restore backups/backup_20240115_030000.sql.gz

Automatic backups are stored in the ./backups directory, compressed, and the last 4 are retained.

Docker Deployment Configuration

Property Mapping

The Docker deployment maps environment variables to Broker properties:

Environment Variable Broker Property
CLOUD_HOST jira-cloud.host
CLOUD_ID jira-cloud.oauth.client.id
CLOUD_SECRET jira-cloud.oauth.client.secret
DB_HOST, DB_PORT, DB_NAME jakarta.persistence.jdbc.url
DB_USER jakarta.persistence.jdbc.user
DB_PASSWORD jakarta.persistence.jdbc.password
KEYSTORE_PATH keystore_filename
KEYSTORE_ALIAS keystore_alias
KEYSTORE_PASSWORD ssl_password

Applying Configuration Changes

After modifying the .env file, restart the services:

./deploy.sh restart

Troubleshooting

# Check all logs
./deploy.sh logs

# Check PostgreSQL logs
docker compose logs postgres

# Check Tomcat logs
docker compose logs tomcat

# Test PostgreSQL connection
docker exec postgres pg_isready -U broker -d broker

# Connect to PostgreSQL
docker exec -it postgres psql -U broker -d broker