I wrote simple program that should print digits from 1 to 9 waiting 1 second between printing.
#!/usr/bin/env perl6
my $x = 1;
while $x < 10 {
say $x++;
sleep(1);
}
It works as expected when I run it from command line
I was trying to achieve the same effect using docker container and program printed first digit, then froze on 9 seconds and printed rest of digits.
My docker-compose
version: "3.1"
services:
cron:
build: phpdocker/cron
container_name: docker-perl6
volumes:
- ./cron:/cron
working_dir: /cron
command: "app.pl"
and Dockerfile
FROM jjmerelo/alpine-perl6
Versions
docker -v
Docker version 18.03.1-ce, build 9ee9f40
docker-compose -v
docker-compose version 1.15.0, build e12f3b9
perl6 -v
This is Rakudo version 2018.03-136-g768cf9f built on MoarVM version 2018.03-56-g85fc758
implementing Perl 6.c.
Update
I changed say $x++;
to say "{time}: {$x++}";
docker-perl6 | 1527933936: 1
docker-perl6 | 1527933937: 2
docker-perl6 | 1527933938: 3
docker-perl6 | 1527933939: 4
docker-perl6 | 1527933940: 5
docker-perl6 | 1527933941: 6
docker-perl6 | 1527933942: 7
docker-perl6 | 1527933943: 8
docker-perl6 | 1527933944: 9
So as @elizabeth-mattijsen and @melpomene mentioned it is issue connected with buffering output by docker.