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
This commit is contained in:
2025-09-25 03:04:53 +05:00
parent e7cb1cb6cc
commit 42638e1638
4 changed files with 47 additions and 31 deletions
+14
View File
@@ -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
+7 -31
View File
@@ -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:
- "8888:8080"
container_name: go-api-server
restart: unless-stopped
+3
View File
@@ -0,0 +1,3 @@
module serv_golang_rest_api
go 1.22.5
+23
View File
@@ -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))
}