Skip to content

Commit a7b850e

Browse files
committed
update
1 parent 1c24cab commit a7b850e

2 files changed

Lines changed: 24 additions & 20 deletions

File tree

gitbox/Dockerfile

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
# syntax=docker/dockerfile:1
22

33
FROM golang:alpine AS builder
4+
45
ENV GOCACHE=/gocache/build
56
ENV GOMODCACHE=/gocache/mod
6-
WORKDIR /builder
7-
COPY . .
8-
RUN --mount=type=cache,target=/gocache go build -o server .
7+
8+
RUN --mount=type=cache,target=/cache \
9+
--mount=type=bind,dst=/build,rw \
10+
cd /build && go build -o /out/server .
911

1012
FROM alpine
1113
RUN apk -U add git-daemon
12-
COPY --from=builder /builder/server /server
14+
COPY --from=builder /out/server /server
1315
WORKDIR /data
16+
VOLUME /data
1417
ENV GIT_PROJECT_ROOT=/data
1518
ENTRYPOINT ["/server"]

gitbox/main.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,18 @@ func main() {
2121
rootDir, err := filepath.Abs(rootDir)
2222
check(err)
2323

24-
token := os.Getenv("AUTH_TOKEN")
25-
if token == "" {
26-
fmt.Fprintln(os.Stderr, "AUTH_TOKEN not set")
24+
git, err := exec.LookPath("git")
25+
if err != nil {
26+
fmt.Fprintln(os.Stderr, "git not found", err)
2727
os.Exit(1)
2828
}
2929

30+
token := os.Getenv("AUTH_TOKEN")
31+
3032
if skip, _ := strconv.ParseBool(os.Getenv("SKIP_ROOT_DIR_INIT")); !skip {
3133
_, err = os.Stat(filepath.Join(rootDir, "HEAD"))
3234
if errors.Is(err, os.ErrNotExist) {
33-
err = exec.Command("git", "init", "--bare", rootDir).Run()
35+
err = exec.Command(git, "init", "--bare", rootDir).Run()
3436
}
3537
check(err)
3638
}
@@ -40,19 +42,17 @@ func main() {
4042
port = "8080"
4143
}
4244

43-
git, err := exec.LookPath("git")
44-
if err != nil {
45-
fmt.Fprintln(os.Stderr, "git not found", err)
46-
os.Exit(1)
47-
}
48-
49-
cgiErr := loggerWriter{log.New(os.Stderr, "git-http-backend: ", 0)}
45+
cgiErr := loggerWriter{log.New(os.Stderr, "git-http-backend: ", log.LstdFlags|log.Lmicroseconds)}
5046
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
51-
user, reqToken, _ := r.BasicAuth()
52-
if reqToken != token {
53-
w.Header().Set("WWW-Authenticate", `Basic realm="Restricted"`)
54-
http.Error(w, "Unauthorized", http.StatusUnauthorized)
55-
return
47+
user := "git"
48+
if token != "" {
49+
var reqToken string
50+
user, reqToken, _ = r.BasicAuth()
51+
if reqToken != token {
52+
w.Header().Set("WWW-Authenticate", `Basic realm="Restricted"`)
53+
http.Error(w, "Unauthorized", http.StatusUnauthorized)
54+
return
55+
}
5656
}
5757

5858
(&cgi.Handler{
@@ -63,6 +63,7 @@ func main() {
6363
Env: []string{
6464
"GIT_PROJECT_ROOT=" + rootDir,
6565
"GIT_HTTP_EXPORT_ALL=yes",
66+
"GIT_HTTP_MAX_REQUEST_BUFFER=256M",
6667
"REMOTE_USER=" + user,
6768
},
6869
Logger: cgiErr.Logger,

0 commit comments

Comments
 (0)