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:
@@ -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
|
||||||
@@ -1,33 +1,9 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# Golang API сервис
|
go-server:
|
||||||
api:
|
build:
|
||||||
build: .
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8888:8080"
|
||||||
environment:
|
container_name: go-api-server
|
||||||
- DB_HOST=db
|
|
||||||
- DB_PORT=5432
|
|
||||||
- DB_USER=postgres
|
|
||||||
- DB_PASSWORD=password
|
|
||||||
- DB_NAME=gorestapi
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
restart: unless-stopped
|
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:
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
module serv_golang_rest_api
|
||||||
|
|
||||||
|
go 1.22.5
|
||||||
@@ -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))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user