Docker

De Wiki1000
Révision datée du 31 mai 2021 à 09:06 par Syfre (discussion | contributions) (→‎Création de l'image)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Utilisation de container Docker

Création de l'image

  • Copier le répertoire serveur sur la machine de build
  • Ajouter un répertoire MSI et copier les .msi d'installation (sqlncli.msi)
  • Configurer le fichier .ini avec les options par défaut
  • Ajouter le fichier Dockerfile
  • Executer la commande de build

Dockerfile :

  • Partir de windows server core
# Sample Dockerfile
# Indicates that the windowsservercore image will be used as the base image.
FROM mcr.microsoft.com/windows/servercore:ltsc2019 

# Metadata indicating an image maintainer.
LABEL maintainer="[email protected]"

# Set registry for CTRL_SHUTDOWN_EVENT 
USER ContainerAdministrator
RUN reg add hklm\system\currentcontrolset\services\cexecsvc /v ProcessShutdownTimeoutSeconds /t REG_DWORD /d 7200  
RUN reg add hklm\system\currentcontrolset\control /v WaitToKillServiceTimeout /t REG_SZ /d 7200000 /f

RUN mkdir "c:\install"
ADD MSI/sqlncli.msi c:/install/sqlncli.msi
#ADD MSI/MsSqlCmdLnUtils.msi c:/install/MsSqlCmdLnUtils.msi
WORKDIR "c:\\install"
RUN powershell start-Process msiexec.exe -ArgumentList '/i c:\install\sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES' -Wait
#RUN powershell start-Process msiexec.exe -ArgumentList '/i c:\install\MsSqlCmdLnUtils.msi /qn IACCEPTSQLNCLILICENSETERMS=YES' -Wait

# Make installation
RUN mkdir "C:\Program Files\Sage\Sage 1000 Server"

# Copy installation
WORKDIR "C:\\Program Files\\Sage\\Sage 1000 Server"
COPY . .

EXPOSE 443
ENTRYPOINT ["servicel1000.exe", "-name", "XXXX"]
#CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]

Commande build

docker build --tag sage1000:910 .

Exécution en container

Commande run

docker run -it -p 443:443 sage1000:910 -name XXXX -server_nodeid YYYY -tcp_add_host HOST:IP
  • Tous les paramètres du fichier .ini peuvent être passer en ligne de commande
  • Du fait que le host du container est par défaut l'id du container et qu'il change à chaque exécution vous devez définir le nodeId explicitement sur la ligne de commande
  • Du fait que le container windows n'est pas capable de résoudre le nom du host docker et que la commande docker --add-host ne marche pas sur windows vous pouvez ajouter des hosts sur la ligne de commande du service

En cas de problème construisez une image avec la commande PowerShell et tester en ligne de commande depuis PowerShell.