如何动态地将参数传递给 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 来实现这个壮举。
请随时提出任何问题。
干杯!
我有一个这样的 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 来实现这个壮举。
请随时提出任何问题。
干杯!