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"]