2016-10-06 5 views
0

Я в настоящее время Dockerfile со следующей CMD линии:Docker CMD с envsubst и тройник

CMD ["/bin/bash", "-c", "envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf && td-agent"] 

Изображение строит хорошо, но когда я иду, чтобы запустить его он жалуется:

Usage: td-agent [options] 
-s, --setup [DIR=/etc/td-agent] install sample configuration file to the directory 
-c, --config PATH    config file path (default: /etc/td-agent/td-agent.conf) 
    --dry-run     Check fluentd setup is correct or not 
-p, --plugin DIR     add plugin directory 

В основном жалуясь, что я не выполняю команду должным образом. Странно то, что если я запустил контейнер (не выполняя ни одной из этих подстановок), то эта команда выполняет штраф в контейнере.

Что я могу делать неправильно?

ответ

0

Есть две формы команды CMD:

CMD ["executable","param1","param2"] (EXEC форма) и

CMD command param1 param2 (форма оболочки)

В принципе, вы используете ехес форму, где вы должны использовать форму оболочки :

CMD envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf && td-agent

И еще лучше:

CMD envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf && exec td-agent

Подробнее: https://docs.docker.com/engine/reference/builder/#/cmd

+0

Я устал делать это изменение, но оно все еще дает ту же ошибку. –