add dockerfile with multistage
This commit is contained in:
41
Makefile
Normal file
41
Makefile
Normal 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
|
||||
Reference in New Issue
Block a user