When setting the GUIAUTOSTART
environment variable to true
, the websocat
(in /etc/services.d/autostart/run
) command ends up never being ran to launch the application.
I believe this is because IPv6 is enabled, here's a netstat -tulpn
output:
Proto |
Recv-Q |
Send-Q |
Local Address |
Foreign Address |
State |
PID/Program name |
tcp |
0 |
0 |
0.0.0.0:4822 |
0.0.0.0:* |
LISTEN |
410/guacd |
tcp6 |
0 |
0 |
:::8080 |
:::* |
LISTEN |
- |
tcp6 |
0 |
0 |
::1:3350 |
:::* |
LISTEN |
402/xrdp-sesman |
tcp6 |
0 |
0 |
:::3389 |
:::* |
LISTEN |
401/xrdp |
(Where :::8080
is the app I'm running.)
I'm caught in this loop:
until \
$(true &>/dev/null </dev/tcp/127.0.0.1/3350) && \
$(true &>/dev/null </dev/tcp/127.0.0.1/4822) && \
$(true &>/dev/null </dev/tcp/127.0.0.1/${CUSTOM_PORT:=3000}) &&
$(true &>/dev/null </dev/tcp/127.0.0.1/3389)
do
sleep .5
done
Because port 3350
isn't available on 127.0.0.1
, you'd have to connect to ::1
or instead. Or better yet, I propose switching all 127.0.0.1
instances with localhost
so this works either way.
Expected Behavior
run
should sleep until all ports are available and I'd see the log line:
[guac-init] Auto start set, starting application
Current Behavior
Instead of continuing past that until
loop, I see a sleep .5
process in the process list with ever-incrementing PIDs.
If I switch over to localhost
(instead of 127.0.0.1
), run
continues to execute.
Steps to Reproduce
- Enable IPv6 in your container environment.
- Install
netstat
, observe that xrdp-session
only listens on IPv6.
Environment
OS: Linux
CPU architecture: x86_64
How docker service was installed: k3s
Command used to create docker container (run/create/compose/screenshot)
This was reproduced with the k8s-at-home/calibre
helm cart.
Docker logs
N/A