0

我有一个像这样的 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 容器出现时使用该参数。

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

4

1 回答 1

1

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

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

其次,您需要在 dockerfile 中定义这些变量。例如:-

第三确保您使用入口点脚本例如:-

最后你可以使用docker run -e DEFINE_THOSE_VARS=<value>. 或者,您也可以像这样使用 docker-compose

你可以遍历我的 repo实现这一壮举。

请随时提出任何问题。

干杯!

于 2018-08-25T10:48:22.853 回答