Имеет ли ваш файл dockerimage ENTRYPOINT
т.е.
copy run2.sh /usr/local/bin/run2.sh
run chmod +x /usr/local/bin/run2.sh
ENTRYPOINT ["/usr/local/bin/run2.sh"]
Ваш файл run2.sh должен выглядеть примерно так (чтобы он мог отвечать на сигналы отОС, т. е. завершение работы)
#!/bin/bash
#This is a run file - which should be used to add things you want your
#container to do when you start it up
#
#If you do not have this then ...
# docker-compose up ---- simply exists as there is nothing for the container to do.
trap cleanup 1 2 3 6 9 15
cleanup()
{
echo "Caught Signal ... cleaning up."
service postgresql stop
sleep 1s
echo "Done ... quitting."
exit 1
}
service postgresql start
# wait forever
echo "Starting up"
while true
do
tail -f /dev/null
done
Примечание. Это устраняет необходимость запуска служб, а также вы можете указать необходимые шаги завершения работы.
Если вы хотите иметь несколько правил, япросто ленивый и слил их всех вместе.
Надеюсь, это поможет ....