This Docker Compose setup provides a complete environment for running multiple Kenya FHIR Implementation Guides with nginx reverse proxy and SSL certificate management.
- kenya-core-fhir-ig - Kenya Core FHIR IG (accessible at
igkenyacore.intellisoftkenya.com) - kps-fhir-ig - Kenya Patient Summary FHIR IG (accessible at
igpatientsummary.intellisoftkenya.com) - eprescription-fhir-ig - Kenya ePrescription IG (accessible at
igeprescriptions.intellisoftkenya.com) - laborders-fhir-ig - Kenya Lab Orders IG (accessible at
iglborders.intellisoftkenya.com) - kenya-claims-fhir-ig - Kenya Claims FHIR IG (accessible at
igeclaims.intellisoftkenya.com) - nginx - Reverse proxy with SSL termination
- Ensure Docker and Docker Compose are installed
- Make sure the Dockerfile locations exist:
/opt/Kenya-core-FHIR-IG/opt/Kenya-Patient-Summary-FHIR-IG/opt/Kenya-ePrescription-IG/opt/Kenya-LabOrder-IG
Upload your wildcard SSL certificates to the ssl directory:
Required files:
ssl/star_intellisoftkenya_com.crt(certificate file)ssl/star_intellisoftkenya_com.key(private key file)
Upload methods:
# Option 1: SCP upload
scp your-cert.crt root@45.79.116.94:/opt/ig-docker-compose/ssl/star_intellisoftkenya_com.crt
scp your-cert.key root@45.79.116.94:/opt/ig-docker-compose/ssl/star_intellisoftkenya_com.key
# Option 2: Direct copy to ssl/ directory
# Copy files directly to the ssl/ folderVerify certificates:
# Run the SSL setup script to verify
./setup-ssl.shEnsure all subdomains are properly configured in your DNS:
igkenyacore.intellisoftkenya.com→ Your server IPigpatientsummary.intellisoftkenya.com→ Your server IPigeprescriptions.intellisoftkenya.com→ Your server IPiglborders.intellisoftkenya.com→ Your server IPigeclaims.intellisoftkenya.com→ Your server IP
- Edit
docker-compose.ymland replaceyour-email@intellisoftkenya.comwith your actual email address
With SSL certificates in place, start the services:
# Start all services
./start.sh
# Or manually start
docker-compose up -dCheck that all services are running:
# View service status
docker-compose ps
# Check nginx logs
docker-compose logs nginx
# Test SSL certificates
curl -I https://igkenyacore.intellisoftkenya.com# Build and start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Rebuild specific service
docker-compose build kenya-core-fhir-ig
docker-compose up -d kenya-core-fhir-igOnce running, the services will be accessible at:
- Kenya Core FHIR IG:
https://igkenyacore.intellisoftkenya.com - Kenya Patient Summary:
https://igpatientsummary.intellisoftkenya.com - Kenya ePrescription:
https://igeprescriptions.intellisoftkenya.com - Kenya Lab Orders:
https://iglborders.intellisoftkenya.com - Kenya Claims:
https://igeclaims.intellisoftkenya.com
Since you're using pre-provided certificates, renewal depends on your certificate provider.
For manual renewal:
- Obtain new certificates from your provider
- Replace files in ssl/ directory:
ssl/star_intellisoftkenya_com.crtssl/star_intellisoftkenya_com.key
- Restart nginx:
docker-compose restart nginx
For automated renewal: Set up a script to automatically fetch and deploy new certificates from your provider.
- Build failures: Ensure Dockerfiles exist at specified paths
- SSL certificate issues: Check domain DNS settings and firewall
- Service not accessible: Check nginx configuration and container logs
# Check container status
docker-compose ps
# View specific service logs
docker-compose logs -f nginx
docker-compose logs -f kenya-core-fhir-ig
# Restart specific service
docker-compose restart nginx
# Shell into container
docker-compose exec nginx shAll services communicate through the fhir-network bridge network. Only nginx exposes ports to the host (80, 443).
- SSL/TLS encryption is enforced
- Security headers are configured in nginx
- Services are isolated in Docker network
- Consider implementing authentication if needed
- Add service definition to
docker-compose.yml - Add corresponding location block in
nginx/conf.d/fhir-ig.conf - Restart services
Modify nginx/nginx.conf or add new files to nginx/conf.d/ for custom configurations.