« Docker » : différence entre les versions

De Wiki1000
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 4 : Ligne 4 :
* Copier le répertoire serveur sur la machine de build
* Copier le répertoire serveur sur la machine de build
* Ajouter un répertoire MSI et copier les .msi d'installation (sqlncli.msi)
* 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
* Ajouter le fichier Dockerfile
* Executer la commande de build
* Executer la commande de build
Ligne 17 : Ligne 18 :


# Metadata indicating an image maintainer.
# Metadata indicating an image maintainer.
LABEL maintainer="syfe92@gmail.com"
LABEL maintainer="sylvain.frere@sage.com"


# Set registry for CTRL_SHUTDOWN_EVENT  
# Set registry for CTRL_SHUTDOWN_EVENT  
Ligne 39 : Ligne 40 :


EXPOSE 443
EXPOSE 443
ENTRYPOINT ["servicel1000.exe"]
ENTRYPOINT ["servicel1000.exe", "-name", "XXXX"]
#CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
#CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
</pre>
</pre>
Ligne 56 : Ligne 57 :
En cas de problème construisez une image avec la commande PowerShell et tester en ligne de commande depuis PowerShell.
En cas de problème construisez une image avec la commande PowerShell et tester en ligne de commande depuis PowerShell.


[[Category:Version920]]
[[Category:Latest]]
[[Category:Latest]]

Dernière version du 31 mai 2021 à 09:06

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.