FROM golang:1.17.2 WORKDIR /src RUN touch shell.sh RUN \ # gterm \ curl -fsSL https://kumoly.io/attachments/e4bdde2a-4247-446f-a734-df3962c8b83b | tar -C /usr/local/bin/ -xz &&\ # configui \ curl -fsSL https://kumoly.io/attachments/9994192c-eca8-481c-bdb9-3d9f440c5c53 | tar -C /usr/local/bin/ -xz &&\ curl -fsSL https://github.com/caddyserver/caddy/releases/download/v2.4.6/caddy_2.4.6_linux_amd64.tar.gz | tar -C /usr/local/bin/ -xz RUN echo '#!/bin/sh\n\ echo "starting shell service..."\n\ gterm -addr :8080 -name GoPlayground -arg "--rcfile" -arg <(gterm -profile) &\n\ echo "starting configui..."\n\ configui -log configui.log -f conf.json -bind :8001 &\n\ caddy run --config Caddyfile\n\ ' > /entrypoint.sh RUN echo '\ :8000 {\n\ route /sh/* {\n\ uri strip_prefix /sh\n\ reverse_proxy localhost:8080\n\ }\n\ reverse_proxy localhost:8001\n\ }' > Caddyfile RUN echo '\ {{ define "links" }}\n\ Shell\n\ {{end}}\n\ ' > links.tmpl RUN echo '{"app_name":"Go Playground","no_reconfig":true \ ,"files":[{"path":"main.go","name":"Main","action":"go run main.go","order":-1},{"path":"shell.sh","name":"Shell","action":"bash shell.sh","order":1}] \ ,"hide_config":true,"cust":"."}' > conf.json RUN echo 'package main\n\ \n\ import "fmt"\n\ \n\ func main() {\n\ fmt.Println("Hello, world.")\n\ }\n' > main.go ENTRYPOINT ["/bin/sh","/entrypoint.sh"]