Docker - Containerisation¶
Vue d'ensemble¶
Ce projet propose plusieurs Dockerfiles pour containeriser webMethods Command Central, avec differentes approches et systemes de base.
graph TB
subgraph Images["Images Docker"]
UB[Ubuntu 22.04<br/>Dockerfile.supervisor]
OL[Oracle Linux 8<br/>Dockerfile.supervisor.oraclelinux]
SPM[SPM Only<br/>Dockerfile.wmSpm.supervisor]
end
subgraph WIP["En developpement"]
RHEL[RHEL 8]
WIN[Windows]
SYS[Systemd]
end
subgraph Compose["Docker Compose"]
CC[sagwm-cc]
SQL[SQL Server]
KC[Keycloak]
end
UB --> CC
SQL --> CC
KC --> CC
Dockerfiles disponibles¶
| Fichier | Base | Status | Usage |
|---|---|---|---|
Dockerfile.supervisor |
Ubuntu 22.04 | Production | CCE + SPM complet |
Dockerfile.supervisor.oraclelinux |
Oracle Linux 8 | Production | Alternative enterprise |
Dockerfile.wmSpm.supervisor |
Ubuntu 22.04 | Production | SPM seul |
Dockerfile.systemd.tofix |
Ubuntu | WIP | Approche systemd |
Dockerfile.rhel8.tofix |
RHEL 8 | WIP | Compatibilite RHEL |
Dockerfile.windows.tofix |
Windows | WIP | Containers Windows |
Dockerfile principal (Ubuntu + Supervisor)¶
# docker/Dockerfile.supervisor
FROM ubuntu:22.04
# Arguments de build
ARG CC_INSTALLER_PATH=/installer/cc-def-10.15-fix8-lnxamd64.sh
ARG CC_ADMIN_PASSWORD=manage123
ARG CC_ADMIN_HOST=localhost
# Variables d'environnement
ENV SAG_HOME=/opt/SAGCommandCentral
ENV USERNAME=wmuser
ENV GROUPNAME=sagwm
ENV USER_UID=1234
ENV GROUP_GID=1234
# Installation des packages
RUN apt-get update && apt-get install -y \
supervisor \
curl \
unzip \
&& rm -rf /var/lib/apt/lists/*
# Creation utilisateur
RUN groupadd -g ${GROUP_GID} ${GROUPNAME} && \
useradd -u ${USER_UID} -g ${GROUPNAME} -m -s /bin/bash ${USERNAME}
# Repertoires
RUN mkdir -p ${SAG_HOME} && \
chown -R ${USERNAME}:${GROUPNAME} ${SAG_HOME}
# Copie des scripts
COPY scripts/ /scripts/
RUN chmod +x /scripts/*.sh
# Configuration Supervisor
COPY docker/supervisor/*.conf /etc/supervisor/conf.d/
# Ports exposes
EXPOSE 8090 8091 8092 8093
# Point d'entree
CMD ["supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]
Configuration Supervisor¶
Command Central (CCE)¶
# docker/supervisor/commandcentral.conf
[program:commandcentral]
command=/opt/SAGCommandCentral/profiles/CCE/bin/startup.sh
directory=/opt/SAGCommandCentral/profiles/CCE
user=wmuser
autostart=true
autorestart=true
startsecs=30
startretries=3
stdout_logfile=/var/log/supervisor/cce-stdout.log
stderr_logfile=/var/log/supervisor/cce-stderr.log
stdout_logfile_maxbytes=50MB
stderr_logfile_maxbytes=50MB
environment=SAG_HOME="/opt/SAGCommandCentral"
Platform Manager (SPM)¶
# docker/supervisor/platformmanager.conf
[program:platformmanager]
command=/opt/SAGCommandCentral/profiles/SPM/bin/startup.sh
directory=/opt/SAGCommandCentral/profiles/SPM
user=wmuser
autostart=true
autorestart=true
startsecs=30
startretries=3
stdout_logfile=/var/log/supervisor/spm-stdout.log
stderr_logfile=/var/log/supervisor/spm-stderr.log
stdout_logfile_maxbytes=50MB
stderr_logfile_maxbytes=50MB
environment=SAG_HOME="/opt/SAGCommandCentral"
Docker Compose¶
# compose.yml
services:
# Command Central + SPM
sagwm-cc:
build:
context: .
dockerfile: docker/Dockerfile.supervisor
args:
CC_INSTALLER_PATH: /installer/cc-def-10.15-fix8-lnxamd64.sh
CC_ADMIN_PASSWORD: manage123
ports:
- "8090:8090" # CCE HTTP
- "8091:8091" # CCE HTTPS
environment:
- CC_INSTALLER_PATH=/installer/cc-def-10.15-fix8-lnxamd64.sh
- CC_ZIP_LICENCE_PATH=/installer/licence.zip
- CC_DB_URL=jdbc:wm:sqlserver://sagwm-sql-server:1433
volumes:
- ./scripts:/scripts:ro
- ./installer:/installer:ro
depends_on:
- sagwm-sql-server
# SPM standalone (optionnel)
sagwm-spm:
build:
context: .
dockerfile: docker/Dockerfile.wmSpm.supervisor
ports:
- "8292:8092"
- "8293:8093"
profiles:
- spm-standalone
# SQL Server
sagwm-sql-server:
image: mcr.microsoft.com/mssql/server:2017-latest
ports:
- "1433:1433"
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=YourStrong!Passw0rd
volumes:
- sql-data:/var/opt/mssql
# Keycloak (SSO)
sagwm-keycloak:
image: quay.io/keycloak/keycloak:26.1.1
command: start-dev
ports:
- "8585:8080"
environment:
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=admin
volumes:
sql-data:
Utilisation¶
Build¶
# Build image principale
docker compose build sagwm-cc
# Build avec arguments personnalises
docker compose build \
--build-arg CC_ADMIN_PASSWORD=MySecurePass \
sagwm-cc
Demarrage¶
# Demarrer tous les services
docker compose up -d
# Demarrer seulement CC + SQL
docker compose up -d sagwm-cc sagwm-sql-server
# Avec profil SPM standalone
docker compose --profile spm-standalone up -d
Verification¶
# Status des containers
docker compose ps
# Logs en temps reel
docker compose logs -f sagwm-cc
# Status Supervisor dans le container
docker compose exec sagwm-cc supervisorctl status
Arret¶
# Arreter les services
docker compose down
# Arreter et supprimer les volumes
docker compose down -v
Gestion des services¶
Commandes Supervisor¶
# Entrer dans le container
docker compose exec sagwm-cc bash
# Status des services
supervisorctl status
# Redemarrer CCE
supervisorctl restart commandcentral
# Arreter SPM
supervisorctl stop platformmanager
# Voir les logs
supervisorctl tail -f commandcentral
Multi-plateforme¶
Oracle Linux 8¶
# docker/Dockerfile.supervisor.oraclelinux
FROM oraclelinux:8
RUN dnf install -y \
supervisor \
curl \
unzip \
&& dnf clean all
# ... reste similaire
Avantages Oracle Linux :
- Compatibilite RHEL
- Support enterprise
- Certifications Oracle
Windows (Experimental)¶
# docker/Dockerfile.windows.tofix
FROM mcr.microsoft.com/windows/servercore:ltsc2019
# En cours de developpement
# Necessite Windows containers
Volumes et persistance¶
volumes:
# Scripts (lecture seule)
- ./scripts:/scripts:ro
# Installateur (lecture seule)
- ./installer:/installer:ro
# Donnees SQL Server (persistant)
- sql-data:/var/opt/mssql
# Logs (optionnel)
- ./logs:/var/log/supervisor
Healthchecks¶
services:
sagwm-cc:
# ...
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/sag/cce/v1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 120s
Bonnes pratiques¶
- Supervisor plutot que systemd - Plus adapte aux containers
- Multi-stage builds - Reduire la taille des images
- Volumes read-only - Securite pour scripts et installateur
- Healthchecks - Detection automatique des problemes
- Logs centralises - Via Supervisor vers stdout
- Variables d'environnement - Configuration flexible