在Docker容器启动运行svn更新脚本

我有一个描述jenkins奴隶的dockerfile。 在这个奴隶,我需要签出一些文件,以使我们的生成工作。 为了让这个文件夹保持最新状态,我打算在每次容器启动时进行一次svn更新。 但是由于某种原因,这并不起作用。 这是我的Dockerfile:

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如下所示:

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

我不明白的是:当我login到我的正在运行的容器并执行

 ./home/svnUpdate.sh user password 

它完美的作品。 我需要更改哪些内容以便在容器启动时执行脚本?

更新:事实certificate脚本的“/ usr / sbin / sshd -D”阻止脚本继续。

我也改变它来使用ENTRYPOINT而不是CMD:

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

现在我唯一的问题是,string“$ svnUser”传递给脚本,而不是parsing的值。

看来ARG值不能在运行时使用,因为它们是构build参数。 我的解决方法是将它们保存在Dockerfile中的Environmentvariables中:

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

并在脚本中使用它:

 #!/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