Ich habe eine dockerfile, die einen jenkins-slave beschreibt. In diesem Slave muss ich einige Dateien auschecken, um unsere Build-Arbeit zu haben. Um diesen Ordner immer auf dem neuesten Stand zu halten, beabsichtige ich jedes Mal, wenn der Container startet, ein Svn-Update durchzuführen. Aber es funktioniert nicht aus irgendeinem Grund. Hier ist mein Dockerfile:Ausführen von svn update script auf docker container start
FROM ubuntu:16.04
...
# Arguments which can be passed via --build-arg <varname>=<value>
ARG svnPassword
ARG svnUser
...
#Install Subversion
RUN apt-get install -y subversion
# Checkout config from SVN
RUN mkdir -p /home/jenkins/workspace/config && cd /home/jenkins/workspace && svn checkout --username $svnUser --password $svnPassword http://myRepo/config
...
# Add svnUpdate.sh script
ADD svnUpdate.sh /home/svnUpdate.sh
CMD /home/svnUpdate.sh $svnUser $svnPassword
Mein svnUpdate.sh sieht wie folgt aus:
#!/bin/sh
/usr/sbin/sshd -D
cd /home/jenkins/workspace/config && svn update --username $1 --password $2
Was ich nicht verstehe, ist: Wenn ich in meinen Laufbehälter einloggen und führen
./home/svnUpdate.sh user password
es funktioniert perfekt. Was muss ich ändern, damit das Skript beim Start des Containers ausgeführt wird?
UPDATE: Es stellt sich heraus, dass das "/ usr/sbin/sshd -D" des Skripts das Skript zum Fortfahren blockiert.
habe ich es auch ENTRYPOINT statt CMD zu verwenden:
ENTRYPOINT ["/bin/bash", "./home/svnUpdate.sh", "$svnUser", "$svnPassword"]
jetzt mein einziges Problem ist, dass die Zeichenfolge „$ svnuser“ an das Skript übergeben wird anstelle des aufgelösten Wert.