У меня возникли проблемы с пониманием или просмотром какой-либо рабочей версии использования сценария bash в качестве точки входа для контейнера Docker. Я пробовал множество вещей в течение примерно 5 часов.
Даже из этого официального блога Docker. , использование bash-скрипта в качестве точки входа по-прежнему не работает.
Докерфайл
FROM debian:stretch
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s /usr/local/bin/docker-entrypoint.sh / # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["postgres"]
докер-entrypoint.sh
#!/bin/bash
set -e
if [ "$1" = 'postgres' ]; then
chown -R postgres "$PGDATA"
if [ -z "$(ls -A "$PGDATA")" ]; then
gosu postgres initdb
fi
exec gosu postgres "$@"
fi
exec "$@"
build.sh
docker build -t test .
запустить.ш
docker service create \
--name test \
test
Несмотря на многие усилия, я не могу получить Dockerfile, используя Entrypoint в качестве bash-скрипта, который не перезапускается постоянно и не повторяется.
Насколько я понимаю, exec "$@"
предполагалось, что форма контейнера будет немедленно закрыта, но я не уверен, зависит ли это от сбоя какого-либо другого процесса в скрипте.
Я пробовал использовать скрипт docker-entrypoint.sh
, который выглядел просто так:
#!/bin/bash
exec "$@"
И поскольку это также не удалось, я думаю, это исключает, что что-то еще не так внутри сценария, являющееся причиной сбоя.
Что также расстраивает, так это то, что нет логов ни с docker service logs test
, ни с docker logs [container_id]
, и я не могу найти ничего полезного в docker inspect [container_id]
.
Мне трудно понять, как все доверяют exec "$@"
. Я не хочу прибегать к чему-то вроде tail -f /dev/null
или использовать команду в docker run
. Я надеялся, что будет какой-то непротиворечивый и надежный способ надежного использования сценария docker-entrypoint.sh
для запуска служб, которые я мог бы запускать с помощью docker run
, а также для других вещей для служб, но даже в официальном блоге Docker и бесчисленных вопросах здесь и в блогах других сайты, я не могу заставить работать хоть один пример.
Я был бы очень признателен за понимание того, что мне здесь не хватает.
docker run
контейнер, который вы создали локально, на переднем плане, что он говорит? - person David Maze   schedule 09.08.2019