Docker
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.