2017-06-02 7 views
1

jockkinsスレーブを記述するドッカーファイルがあります。このスレーブでは、ビルド作業を行うためにいくつかのファイルをチェックアウトする必要があります。このフォルダを常に最新にするために、私はコンテナが起動するたびにsvnの更新を行うつもりでした。しかし、それは何らかの理由で動作しません。ここに私のDockerfileです:ドッカーコンテナでsvn updateスクリプトを実行しています

#!/bin/sh 
/usr/sbin/sshd -D 
cd /home/jenkins/workspace/config && svn update --username $1 --password $2 

私は理解していないことである:

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 

私svnUpdate.shは、このようになります私は、実行中のコンテナにログインして実行すると

./home/svnUpdate.sh user password 

それは完全に動作します。コンテナの起動時にスクリプトが実行されるように変更するにはどうすればよいですか?

更新: スクリプトの "/ usr/sbin/sshd -D"がスクリプトの実行を中断することが判明しました。

私はまた、代わりにCMDのENTRYPOINTを使用するように変更:

ENTRYPOINT ["/bin/bash", "./home/svnUpdate.sh", "$svnUser", "$svnPassword"] 

今、私の唯一の問題は、文字列「$ svnUserが」代わりに解決された値のスクリプトに渡されていることです。

答えて

0

ARG値はビルド引数であるため、実行時に使用できないようです。

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

、スクリプトでそれを使用します:私の問題を回避するには、Dockerfileの環境変数に保存することです

#!/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 
関連する問題