2017-06-02 9 views
1

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.

Antwort

0

Es scheint, dass die ARG-Werte nicht zur Laufzeit verwendet werden können, da sie Build-Argumente sind. Meine Abhilfe ist, sie in einer Umgebungsvariablen in der Dockerfile zu speichern:

... 
ENV SVN_USER $svnUser 
ENV SVN_PW $svnPassword 
... 

und es im Skript verwenden:

#!/bin/sh 
cd /home/jenkins/workspace/config && svn update --username $SVN_USER --password $SVN_PW 
unset SVN_USER 
unset SVN_PW 
/usr/sbin/sshd -D 
Verwandte Themen