在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
- 如何与jenkinsdocker集装箱装卸docker卷?
- 无论使用ITicketStore还是IDistributedCache,重新启动服务器时,身份validationCookie都会停止工作
- 是否有可能使用Docker Compose从正在运行的Docker容器中启动新的Docker容器?
- 脚本testing,看看是否已经加载了一个工具?
- 当查询dockerized gunicorn时,由对端重置连接
- 如何在docker-compose中通知`restart:on-failure`错误?
- selenium在docker集装箱,我们可以采取屏幕截图
- 在minikube docker容器中使用angular2应用程序获取“无效的主机头”
- 检查docker集线器上是否已经存在image:tag组合