Si quelqu'un veut passer une variable ARG
ou ENV
à la forme exec de l'ENTRYPOINT, alors un fichier temporaire créé pendant le processus de construction de l'image peut être utilisé.
Dans mon cas, j'ai dû démarrer l'application différemment en fonction de savoir si l'application .NET a été publiée en tant que autonome ou non. Ce que j'ai fait, c'est créer le fichier temporaire et utiliser son nom dans l'instruction if
de mon script bash.
Partie de mon dockerfile:
ARG SELF_CONTAINED=true #ENV SELF_CONTAINED=true also works
# Le fichier doit être utilisé comme une variable car il est impossible de passer une variable à l'ENTRYPOINT en utilisant la forme Exec. Le nom du fichier permet de vérifier si l'application est autonome
RUN touch ${SELF_CONTAINED}.txt
COPY run-dotnet-app.sh .
ENTRYPOINT ["./run-dotnet-app.sh", "MyApp" ]
run-dotnet-app.sh
:
#!/bin/sh
FILENAME=$1
if [ -f "true.txt" ]; then
./"${FILENAME}"
else
dotnet "${FILENAME}".dll
fi