Как перехватить стандартный вывод из процесса докера и передать его другому с помощью ENTRYPOINT или CMD - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть это:

ENTRYPOINT ["node", ".", "|", "tee", ">(echo 'bar')"]

, но, похоже, это не работает, возможно, потому что tee не установлен в моем контейнере.Это правильный способ сделать это, хотя?Я хочу запустить контейнер в ECS, отправить stdout / stderr из процесса узла в контейнеры stdout / stderr, но также перехватить его.

Например, я попытался сделать это вместо этого:

ENTRYPOINT ["node", ".", "|", "cat > /dev/null"]

и это не сработало, как ожидалось.Однако, похоже, это сработало:

ENTRYPOINT node . | cat > /dev/null

Кто-нибудь знает почему?

1 Ответ

1 голос
/ 19 сентября 2019

Я хочу запустить контейнер в ECS, отправить stdout / stderr из процесса узла в контейнеры stdout / stderr

Вам нужно указать cat или tee и т. Д., Если выузел - это основной процесс контейнера, он будет записывать логи в stdout / stderr контейнера.если вы пишете журналы в файл, то лучше записывать эти журналы в консоль, поскольку запись журналов в файл в контейнере бесполезна.

Кроме того, вы сможете перехватить эти журналы в своем облачном хранилище, если настроено.

Просто добавьте это, и этого будет достаточно для обработки регистрационного журнала.

FROM node:alpine
WORKDIR /app
CMD ["node", "app/server.js"]

Вот так будет выглядеть поток журналов.

enter image description here

Или Если вы хотите нажать на ELK, тогда поток будет

enter image description here

...