| FROM golang:1.22-bookworm |
|
|
| WORKDIR /app |
|
|
| ENV PORT=7860 |
| ENV ADDR=:7860 |
| ENV CGO_ENABLED=0 |
|
|
| RUN cat <<'EOF' > /usr/local/bin/run-gateway |
| |
| set -eu |
|
|
| if [ -n "${PORT:-}" ]; then |
| export ADDR=":${PORT}" |
| fi |
|
|
| if [ -n "${GO_CODE_B64:-}" ]; then |
| printf '%s' "$GO_CODE_B64" | base64 -d > /app/main.go |
| elif [ -n "${GO_CODE:-}" ]; then |
| printf '%s' "$GO_CODE" > /app/main.go |
| else |
| echo "missing GO_CODE_B64 or GO_CODE" >&2 |
| exit 2 |
| fi |
|
|
| if [ -n "${GO_MOD_B64:-}" ]; then |
| printf '%s' "$GO_MOD_B64" | base64 -d > /app/go.mod |
| elif [ -n "${GO_MOD:-}" ]; then |
| printf '%s' "$GO_MOD" > /app/go.mod |
| elif [ ! -f /app/go.mod ]; then |
| cat > /app/go.mod <<'MOD' |
| module hf-space-gateway |
|
|
| go 1.22 |
| MOD |
| fi |
|
|
| go mod tidy >/dev/null 2>&1 || { |
| echo "build failed" >&2 |
| exit 2 |
| } |
|
|
| go build -trimpath -ldflags="-s -w" -o /tmp/gateway . >/dev/null 2>&1 || { |
| echo "build failed" >&2 |
| exit 2 |
| } |
|
|
| exec /tmp/gateway |
| EOF |
|
|
| RUN chmod +x /usr/local/bin/run-gateway |
|
|
| EXPOSE 7860 |
|
|
| CMD ["/usr/local/bin/run-gateway"] |
|
|