51 lines
1.7 KiB
Docker
51 lines
1.7 KiB
Docker
FROM golang:1.17.2
|
|
|
|
WORKDIR /src
|
|
|
|
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/e4258c02-1e79-4969-b553-070668498dd4 | 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 touch shell.sh && \
|
|
echo '\
|
|
:8000 {\n\
|
|
route /sh/* {\n\
|
|
uri strip_prefix /sh\n\
|
|
reverse_proxy localhost:8080\n\
|
|
}\n\
|
|
reverse_proxy localhost:8001\n\
|
|
}' > /Caddyfile && \
|
|
echo '\
|
|
{{ define "links" }}\n\
|
|
<a class="button is-white level-item" \n\
|
|
href="sh/"\n\
|
|
>Shell</a>\n\
|
|
{{end}}\n\
|
|
' > /links.tmpl && \
|
|
echo 'package main\n\
|
|
\n\
|
|
import "fmt"\n\
|
|
\n\
|
|
func main() {\n\
|
|
fmt.Println("Hello, world.")\n\
|
|
}\n' > main.go && \
|
|
echo '#!/bin/bash\n\
|
|
echo "starting shell service..."\n\
|
|
gterm -profile > /.profile\n\
|
|
cd /root && gterm -addr :8080 -name GoPlayground -arg "--rcfile" -arg /.profile &\n\
|
|
echo "starting configui..."\n\
|
|
echo "setup config ..."\n\
|
|
echo "{\"app_name\":\"Go Playground\",\"no_reconfig\":true,\"shell\": \"bash\",\"hide_config\":true,\"cust\":\"/\",\"files\":[\
|
|
" > /conf.json \n\
|
|
for f in *.go;do if [ "$f" != "main.go" ] ; then echo "{\"path\":\"$f\"},">>/conf.json;fi done \n\
|
|
echo "{\"path\":\"main.go\",\"name\":\"Main\",\"action\":\"go run main.go\",\"order\":-1},">>/conf.json \n\
|
|
echo "{\"path\":\"shell.sh\",\"name\":\"Shell\",\"action\":\"bash shell.sh\",\"order\":1}]}">>/conf.json \n\
|
|
configui -f /conf.json -bind :8001 &\n\
|
|
caddy run --config /Caddyfile\n\
|
|
' > /entrypoint.sh
|
|
|
|
ENTRYPOINT ["/bin/bash","/entrypoint.sh"]
|