Во-первых, спасибо за использование моего док-контейнера perl6.Я попробую несколько вещей с вашей программой, чтобы выяснить, в чем действительно проблема.Я так понимаю, вы хотите знать, в целом, что происходит с такими программами в Docker, а не в конкретной среде Docker-compose, верно?
Запустите программу из контейнера Docker
Вы можете сделать это:
docker run -it --rm --entrypoint sh jjmerelo/alpine-perl6
и затем создать файл внутри контейнера (например, используйте cat > con
).Я проверил это, и он работает правильно, никаких проблем.
Запустите программу из-за предконтрольного контейнера
Вы можете сделать это:
docker run -it --rm -v $PWD:/app jjmerelo/alpine-perl6 /app/app.pl
По-прежнему никаких проблем, она печатает данные одну секунду.Похоже, что это не проблема буферизации докера.Давайте попробуем пойти немного дальше
Проблемы с docker-compose?
То, что вы здесь делаете, это создание двух контейнеров docker, вы запускаете один контейнер из другого.Мы в значительной степени установили, что у alpine-perl6 может не быть проблем.Может ли это быть в phpdocker ?Мои деньги на это, хотя и не ясно, какой контейнер вы используете, эта суть, кажется, указывает на тот контейнер, фактически использующий буферизацию .В обновленном ответе на самом деле печатается не время, а количество печатаемых байтов, достаточное для заполнения буфера.Попробуйте изменить $x
на "a good amount of bytes, including $x"
, чтобы увидеть, так ли это.
В любом случае, я бы посмотрел на конфигурацию контейнера phpdocker, как говорит @lizmat.Кроме того, если вам нужен только cron, вы можете следовать этому совету , установить cron для alpine или использовать другие контейнеры, такие как этот