diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8b49ae8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM docker.io/golang:1.26.1-trixie AS builder + +WORKDIR /build + +COPY go.mod go.sum . + +RUN GOPROXY='https://goproxy.cn,direct' go mod download + +COPY cmd ./cmd +COPY internal ./internal + +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ + go build -trimpath -ldflags="-s -w" -o /app ./cmd/api + +FROM scratch +WORKDIR / + +COPY --from=builder /app /app +COPY db/ /db + +ENTRYPOINT ["/app"] \ No newline at end of file diff --git a/README.md b/README.md index 2fbbbbe..2bc3015 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,32 @@ The backend of a bigdata market. ## Usage -env: +### env - DATABASE_URL example:"postgres://datamarket:datamarket@localhost:5432/datamarket?sslmode=disable" -- SERVER_ADDR default :8080 \ No newline at end of file +- SERVER_ADDR default :8080 + +### run + +#### docker + +use `docker.io/starryskymeow/datamarket-backend:latest` + +#### go + +```shell +go run cmd/api/main.go +``` + +### db + +```shell +# run a test db, you can use docker instead of podman +podman run -d \ + --name datamarket-db-dev \ + -p 127.0.0.1:5432:5432 \ + -e POSTGRES_USER=datamarket \ + -e POSTGRES_PASSWORD=datamarket \ + -e POSTGRES_DB=datamarket \ + -v datamarket-db-dev:/var/lib/postgresql/data \ + docker.io/library/postgres:17 +```