add dockerfile with multistage

This commit is contained in:
2026-02-03 04:00:38 +03:00
parent 25fc35eb3a
commit 5e183f950f
9 changed files with 129 additions and 3 deletions

41
Makefile Normal file
View File

@ -0,0 +1,41 @@
# Переменные
# Имя бинарника (измените на ваше)
BINARY_NAME := learn
# Выходной каталог
BUILD_DIR := bin
# Директория с конфигами (например, config.yaml)
CONFIG_DIR := config
# Все Go-файлы
GO_SRC := $(shell find . -name '*.go')
GO_MOD := go.mod go.sum
VERSION := $(shell git describe --tags --always)
# Цель по умолчанию: сборка
all: build
# Сборка бинарника и копирование файлов
build: $(BUILD_DIR)/$(BINARY_NAME)
@echo "Build completed"
$(BUILD_DIR)/$(BINARY_NAME): $(GO_SRC) $(GO_MOD)
@mkdir -p $(BUILD_DIR)
# Измените ./cmd/myapp на путь к main.go
CGO_ENABLED=0 GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/app/main.go
# Копируем конфиги (добавьте другие файлы по аналогии, e.g. cp static/* $(BUILD_DIR)/)
@mkdir $(BUILD_DIR)/$(CONFIG_DIR)/
@cp -r $(CONFIG_DIR)/*.yml $(BUILD_DIR)/$(CONFIG_DIR)/
# Тестирование
test:
go test -v ./...
# Очистка
clean:
rm -rf $(BUILD_DIR)
go clean
# Docker-сборка (пример, если нужно собрать образ)
docker-build: build
docker build -t $(BINARY_NAME):latest -f Dockerfile .
docker build -t $(BINARY_NAME):$(VERSION) -f Dockerfile .
.PHONY: all build test clean docker-build