63 lines
1.7 KiB
Makefile
63 lines
1.7 KiB
Makefile
.PHONY: dev dev-web build build-go build-web run test tidy clean docker-build docker-push-prebuilt
|
|
|
|
export GOPROXY ?= https://goproxy.cn,direct
|
|
export GOSUMDB ?= sum.golang.google.cn
|
|
export IMAGE_PREFIX ?= docker.1panel.live/library/
|
|
export APK_MIRROR ?= mirrors.aliyun.com
|
|
export DOCKER_PLATFORM ?= linux/amd64
|
|
export APP_IMAGE ?= atlas:latest
|
|
|
|
dev:
|
|
@echo "Run backend and frontend in separate terminals:"
|
|
@echo " make run"
|
|
@echo " make dev-web"
|
|
|
|
dev-web:
|
|
cd web && npm install && npm run dev
|
|
|
|
build-web:
|
|
cd web && npm install && npm run build
|
|
rm -rf internal/api/static/*
|
|
cp -r web/dist/* internal/api/static/
|
|
|
|
build: build-web
|
|
go build -o dist/app ./cmd/app
|
|
|
|
build-go:
|
|
go build -o dist/app ./cmd/app
|
|
|
|
run:
|
|
go run ./cmd/app
|
|
|
|
tidy:
|
|
go mod tidy
|
|
|
|
test:
|
|
go test ./...
|
|
|
|
clean:
|
|
rm -rf dist web/dist internal/api/static .docker-bin
|
|
@echo '<!DOCTYPE html><html><head><title>Atlas</title></head><body>Atlas</body></html>' > internal/api/static/index.html
|
|
|
|
docker-build:
|
|
docker buildx build --platform $(DOCKER_PLATFORM) \
|
|
-t $(APP_IMAGE) \
|
|
--build-arg IMAGE_PREFIX=$(IMAGE_PREFIX) \
|
|
--build-arg APK_MIRROR=$(APK_MIRROR) \
|
|
--build-arg GOPROXY=$(GOPROXY) \
|
|
--build-arg GOSUMDB=$(GOSUMDB) \
|
|
--load \
|
|
.
|
|
|
|
# 本地交叉编译 + 仅打 runtime 镜像,避免 Docker 内 go build(最快,与 Luminary 一致)
|
|
docker-push-prebuilt: build-web
|
|
mkdir -p .docker-bin
|
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o .docker-bin/app ./cmd/app
|
|
docker buildx build --platform $(DOCKER_PLATFORM) \
|
|
-f docker/Dockerfile.prebuilt \
|
|
-t $(APP_IMAGE) \
|
|
--build-arg IMAGE_PREFIX=$(IMAGE_PREFIX) \
|
|
--build-arg APK_MIRROR=$(APK_MIRROR) \
|
|
--load \
|
|
.
|