repos / git-pr

a self-hosted git collaboration server
git clone https://github.com/picosh/git-pr.git

commit
60aa6b3
parent
7c6fe3b
author
Eric Bower
date
2024-05-20 23:16:17 -0400 EDT
chore: docker
3 files changed,  +110, -0
A Dockerfile
+59, -0
 1@@ -0,0 +1,59 @@
 2+FROM --platform=$BUILDPLATFORM golang:1.22 as builder-deps
 3+LABEL maintainer="Pico Maintainers <hello@pico.sh>"
 4+
 5+WORKDIR /app
 6+
 7+RUN apt-get update
 8+RUN apt-get install -y git ca-certificates
 9+
10+COPY go.* ./
11+
12+RUN go mod download
13+
14+FROM builder-deps as builder-web
15+
16+COPY . .
17+
18+ARG TARGETOS
19+ARG TARGETARCH
20+
21+ENV CGO_ENABLED=0
22+ENV LDFLAGS="-s -w"
23+
24+ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH}
25+
26+RUN go build -ldflags "$LDFLAGS" -o /go/bin/web ./cmd/web
27+
28+FROM builder-deps as builder-ssh
29+
30+COPY . .
31+
32+ARG TARGETOS
33+ARG TARGETARCH
34+
35+ENV CGO_ENABLED=0
36+ENV LDFLAGS="-s -w"
37+
38+ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH}
39+
40+RUN go build -ldflags "$LDFLAGS" -o /go/bin/ssh ./cmd/ssh
41+
42+FROM scratch as release-web
43+
44+WORKDIR /app
45+
46+COPY --from=builder-web /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
47+COPY --from=builder-web /go/bin/web ./web
48+
49+ENTRYPOINT ["/app/web"]
50+
51+FROM scratch as release-ssh
52+
53+WORKDIR /app
54+ENV TERM="xterm-256color"
55+
56+COPY --from=builder-ssh /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
57+COPY --from=builder-ssh /go/bin/ssh ./ssh
58+
59+
60+ENTRYPOINT ["/app/ssh"]
M Makefile
+15, -0
 1@@ -1,3 +1,8 @@
 2+DOCKER_TAG?=$(shell git log --format="%H" -n 1)
 3+DOCKER_PLATFORM?=linux/amd64,linux/arm64
 4+DOCKER_CMD?=docker
 5+DOCKER_BUILDX_BUILD?=$(DOCKER_CMD) buildx build --push --platform $(DOCKER_PLATFORM)
 6+
 7 fmt:
 8 	go fmt ./...
 9 	deno fmt README.md
10@@ -11,3 +16,13 @@ build:
11 	go build -o ./build/ssh ./cmd/ssh
12 	go build -o ./build/web ./cmd/web
13 .PHONY: build
14+
15+bp-setup:
16+	$(DOCKER_CMD) buildx ls | grep pico || $(DOCKER_CMD) buildx create --name pico
17+	$(DOCKER_CMD) buildx use pico
18+.PHONY: bp-setup
19+
20+bp: bp-setup
21+	$(DOCKER_BUILDX_BUILD) -t "ghcr.io/picosh/pico/git-ssh:$(DOCKER_TAG)" --target release-ssh .
22+	$(DOCKER_BUILDX_BUILD) -t "ghcr.io/picosh/pico/git-web:$(DOCKER_TAG)" --target release-web .
23+.PHONY: bp
A docker-compose.yml
+36, -0
 1@@ -0,0 +1,36 @@
 2+services:
 3+  web:
 4+    image: ghcr.io/picosh/pico/git-web:latest
 5+    restart: always
 6+    networks:
 7+      git:
 8+        aliases:
 9+          - web
10+    env_file:
11+      - .env.prod
12+    ports:
13+      - "${GIT_HTTPS_V4:-443}:443"
14+      - "${GIT_HTTP_V4:-80}:80"
15+      - "${GIT_HTTPS_V6:-[::1]:443}:443"
16+      - "${GIT_HTTP_V6:-[::1]:80}:80"
17+  ssh:
18+    image: ghcr.io/picosh/pico/git-ssh:latest
19+    restart: always
20+    networks:
21+      git:
22+        aliases:
23+          - ssh
24+    env_file:
25+      - .env.prod
26+    volumes:
27+      - ./data/git-ssh/data:/app/ssh_data
28+    ports:
29+      - "${GIT_SSH_V4:-22}:2222"
30+      - "${GIT_SSH_V6:-[::1]:22}:2222"
31+networks:
32+  git:
33+    driver_opts:
34+      com.docker.network.bridge.name: pico
35+    ipam:
36+      config:
37+        - subnet: 172.25.0.0/16