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

How to pass arguments to the docker run command dynamically

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

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\(\);/unix-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 容器出现时,脚本位置下的内部脚本之一应该使用参数。

请让我知道我该怎么做以及如何实现这个

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

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

其次,您需要在 docker 文件中定义这些变量。 For example:-

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

最后可以使用了docker run -e DEFINE_THOSE_VARS=<value>。或者你可以使用 docker-compose 像 this

你可以遍历我的 repo here 来实现这个壮举。

请随时提出任何问题。

干杯!