如何动态地将参数传递给docker run命令

时间:2018-08-25 10:28:15

标签: docker parameter-passing supervisord docker-run

我有一个像这样的docker文件,我必须将参数动态传递给docker run命令

FROM ubuntu:14.04
ENV IRONHIDE_SOURCE /var/tmp/ironhide-setup
RUN apt-get update && apt-get install -y  openssh-server supervisor cron syslog-ng-core logrotate libapr1 libaprutil1 liblog4cxx10 libxml2 psmisc xsltproc ntp
RUN sed -i -E 's/^(\s*)system\(\);/\1unix-stream("\/dev\/log");/' /etc/syslog-ng/syslog-ng.conf
ADD ironhide-setup/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN mkdir -p /var/log/supervisor & mkdir -p /opt/ibm/
COPY /ironhide-setup/etc/cron.d/* /etc/cron.d
ADD ironhide-setup $IRONHIDE_SOURCE
ENV JAVA_HOME /usr/java/default
ENV PATH $JAVA_HOME/bin:$PATH
ENV IRONHIDE_ROOT /usr/ironhide
ENV LD_LIBRARY_PATH /usr/ironhide/lib
ENV IH_ROOT /usr/ironhide
ENV IRONHIDE_BACKUP_PATH /var/tmp/ironhide-backup
ENV PATH $IH_ROOT/bin:$PATH
RUN echo 'PS1="[AppConnect-Container@\h \w]: "' >> ~/.bashrc
CMD ["/usr/bin/supervisord"]

而我的supervisord.conf是这个

[supervisord]
nodaemon=true

[program:cron]
command = cron -f -L 15
priority=1

[program:syslog-ng]
command=/usr/sbin/syslog-ng -F -p /var/run/syslog-ng.pid --no-caps

[program:InstallCastIron]
command = %(ENV_IRONHIDE_SOURCE)s/scripts/var_setup
priority=2

我必须将参数传递给“ docker run”命令,因此当docker容器出现时,在脚本位置下的内部脚本之一应该使用该参数。

请让我知道我该怎么做以及如何实现” this

1 个答案:

答案 0 :(得分:0)

要实现这一壮举,您将需要使用环境变量。

首先,您需要确保要传递参数以使用这些环境变量的服务。

第二,您需要在dockerfile中定义这些变量。 For example:-

第三,确保您使用入口点脚本For example:-

最后,您可以使用docker run -e DEFINE_THOSE_VARS=<value>。或者,您也可以使用this

这样的docker-compose

您可以遍历实现此专长的我的仓库here

请随时提问。

干杯!