diff --git a/.gitea/workflows/build_to_registry.yaml b/.gitea/workflows/build_to_registry.yaml index 881936f..ca6c418 100644 --- a/.gitea/workflows/build_to_registry.yaml +++ b/.gitea/workflows/build_to_registry.yaml @@ -31,7 +31,7 @@ jobs: with: registry: git.gocommunity.ru username: ${{ secrets.USER }} - password: ${{ secrets.TOKEN }} + password: ${{ secrets.PASSW }} - name: Build and push Docker image uses: docker/build-push-action@v5 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ae74a78 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# Build stage +FROM golang:1.25-alpine AS builder + +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download + +COPY . . + +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main ./cmd/. + +# Final stage +FROM alpine:latest +RUN apk --no-cache add ca-certificates + +WORKDIR /root/ +COPY --from=builder /app/main . + +# Создать директорию для приложения +WORKDIR /app +COPY --from=builder /app/main . + +# Создать non-root пользователя для безопасности +RUN addgroup -g 1001 -S appuser && \ + adduser -u 1001 -S appuser -G appuser && \ + chown -R appuser:appuser /app + +USER appuser + +# Установить переменные окружения +ENV PORT=8080 +ENV HOST=0.0.0.0 + + +EXPOSE 8080 +CMD ["./main"] \ No newline at end of file diff --git a/cmd/app.go b/cmd/app.go index d8edafb..1c02ff6 100644 --- a/cmd/app.go +++ b/cmd/app.go @@ -12,6 +12,7 @@ func main() { http.HandleFunc("/", helloHandler) http.HandleFunc("/health", healthHandler) + // port := "8080" port := os.Getenv("PORT") if port == "" { port = "8080"