From 42638e1638772e428cf02403a8ed0c7fe846b8b8 Mon Sep 17 00:00:00 2001 From: valitovgaziz Date: Thu, 25 Sep 2025 03:04:53 +0500 Subject: [PATCH] new file: serv_golang_rest_api/Dockerfile modified: serv_golang_rest_api/docker-compose.yaml new file: serv_golang_rest_api/go.mod new file: serv_golang_rest_api/main.go build short Golang rest api server in docker compose conteyner --- serv_golang_rest_api/Dockerfile | 14 +++++++++ serv_golang_rest_api/docker-compose.yaml | 38 +++++------------------- serv_golang_rest_api/go.mod | 3 ++ serv_golang_rest_api/main.go | 23 ++++++++++++++ 4 files changed, 47 insertions(+), 31 deletions(-) create mode 100644 serv_golang_rest_api/Dockerfile create mode 100644 serv_golang_rest_api/go.mod create mode 100644 serv_golang_rest_api/main.go diff --git a/serv_golang_rest_api/Dockerfile b/serv_golang_rest_api/Dockerfile new file mode 100644 index 0000000..d00532f --- /dev/null +++ b/serv_golang_rest_api/Dockerfile @@ -0,0 +1,14 @@ +# Build stage +FROM golang:1.25.1 as builder +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY *.go ./ +RUN CGO_ENABLED=0 GOOS=linux go build -o /go/bin/app + +# Final stage +FROM gcr.io/distroless/static-debian12 +WORKDIR / +COPY --from=builder /go/bin/app /app +CMD ["/app"] +EXPOSE 8080 \ No newline at end of file diff --git a/serv_golang_rest_api/docker-compose.yaml b/serv_golang_rest_api/docker-compose.yaml index fe233d9..bb2b877 100644 --- a/serv_golang_rest_api/docker-compose.yaml +++ b/serv_golang_rest_api/docker-compose.yaml @@ -1,33 +1,9 @@ -version: '3.8' - services: - # Golang API сервис - api: - build: . + go-server: + build: + context: . + dockerfile: Dockerfile ports: - - "8080:8080" - environment: - - DB_HOST=db - - DB_PORT=5432 - - DB_USER=postgres - - DB_PASSWORD=password - - DB_NAME=gorestapi - depends_on: - - db - restart: unless-stopped - - # PostgreSQL база данных - db: - image: postgres:15-alpine - environment: - - POSTGRES_DB=gorestapi - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=password - ports: - - "5432:5432" - volumes: - - postgres_data:/var/lib/postgresql/data - restart: unless-stopped - -volumes: - postgres_data: \ No newline at end of file + - "8888:8080" + container_name: go-api-server + restart: unless-stopped \ No newline at end of file diff --git a/serv_golang_rest_api/go.mod b/serv_golang_rest_api/go.mod new file mode 100644 index 0000000..d926b66 --- /dev/null +++ b/serv_golang_rest_api/go.mod @@ -0,0 +1,3 @@ +module serv_golang_rest_api + +go 1.22.5 diff --git a/serv_golang_rest_api/main.go b/serv_golang_rest_api/main.go new file mode 100644 index 0000000..6da4acc --- /dev/null +++ b/serv_golang_rest_api/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "encoding/json" + "log" + "net/http" +) + +type Response struct { + Message string `json:"message"` +} + +func handler(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + response := Response{Message: "ok"} + json.NewEncoder(w).Encode(response) +} + +func main() { + http.HandleFunc("/", handler) + log.Println("Сервер запущен на http://localhost:8080") + log.Fatal(http.ListenAndServe(":8080", nil)) +} \ No newline at end of file