Deployment

Docker & Kubernetes Deployment

Deploy iris-sscp into production environments using Docker Compose, Kubernetes Pods, or containerized daemons to continuously copy files over InterSystems IRIS SuperServer port 1972 via Caretdev's caretdev/go-irisnative Go driver.

1. Docker Compose Setup

Run iris-sscp alongside IRIS container services using docker-compose.yml without installing any IPM packages or compiling custom ObjectScript classes:

services:
  iris1:
    image: intersystemsdc/iris-community:latest
    ports:
      - "41773:1972"
      - "42773:52773"

  iris2:
    image: intersystemsdc/iris-community:latest
    ports:
      - "41663:1972"
      - "42663:52773"

  iris-sscp:
    build:
      context: ./iris-sscp
      dockerfile: Dockerfile
    restart: always
    environment:
      - SSCP_SOURCE=_SYSTEM:SYS@iris1:1972@USER:/iris1/TESTA.txt
      - SSCP_TARGET=_SYSTEM:SYS@iris2:1972@USER:/iris2/copyTESTA.txt
      - SSCP_INTERVAL=5s
      - SSCP_MODE=direct
    depends_on:
      - iris1
      - iris2

Running with Docker Compose

# Build and start services
docker-compose up --build -d

# View copier logs
docker-compose logs -f iris-sscp

2. Kubernetes & Podman Pods

Deploy iris-sscp directly into Kubernetes or using Podman (podman play kube):

Multi-Container Pod (pod.yaml)

kubectl apply -f pod.yaml
# or with Podman:
podman play kube pod.yaml

Decoupled Kubernetes Deployment (k8s-manifest.yaml)

kubectl apply -f k8s-manifest.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sscp-copier
  namespace: iris-infrastructure
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sscp-copier
  template:
    metadata:
      labels:
        app: sscp-copier
    spec:
      containers:
      - name: iris-sscp
        image: sscp/iris-sscp:latest
        env:
        - name: SSCP_SOURCE
          value: "_SYSTEM:SYS@iris-source.svc.cluster.local:1972@%SYS:/data/source.dat"
        - name: SSCP_TARGET
          value: "_SYSTEM:SYS@iris-target.svc.cluster.local:1972@USER:/data/dest.dat"
        - name: SSCP_INTERVAL
          value: "10s"
        - name: SSCP_MODE
          value: "direct"

3. iris-sscp Multi-Stage Dockerfile

FROM golang:1.24-alpine AS builder

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .

RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o iris-sscp main.go

FROM alpine:3.19

RUN apk add --no-cache ca-certificates tzdata

WORKDIR /app

COPY --from=builder /app/iris-sscp /app/iris-sscp

ENTRYPOINT ["/app/iris-sscp"]