Files
anthonyrawlins f5f96ba505 Major updates and improvements to BZZZ system
- Updated configuration and deployment files
- Improved system architecture and components
- Enhanced documentation and testing
- Fixed various issues and added new features

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 18:06:57 +10:00

141 lines
3.7 KiB
Docker

# HCFS Go Development Environment
FROM bzzz-hcfs-base:latest
LABEL maintainer="anthony@deepblack.cloud"
LABEL description="HCFS Go development environment with modern Go tools"
LABEL language="go"
LABEL version="1.0.0"
# Install Go
ENV GO_VERSION=1.21.3
RUN wget -O go.tar.gz "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
# Set up Go environment
ENV GOROOT=/usr/local/go
ENV GOPATH=/home/agent/go
ENV GOCACHE=/home/agent/.cache/go-build
ENV GOMODCACHE=/home/agent/.cache/go-mod
ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH
# Create Go workspace
RUN sudo -u agent mkdir -p /home/agent/go/{bin,src,pkg} && \
sudo -u agent mkdir -p /home/agent/work/{cmd,internal,pkg,api,web,scripts,docs,tests}
# Install Go development tools
RUN sudo -u agent bash -c 'go install golang.org/x/tools/gopls@latest' && \
sudo -u agent bash -c 'go install golang.org/x/tools/cmd/goimports@latest' && \
sudo -u agent bash -c 'go install golang.org/x/lint/golint@latest' && \
sudo -u agent bash -c 'go install github.com/goreleaser/goreleaser@latest' && \
sudo -u agent bash -c 'go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest' && \
sudo -u agent bash -c 'go install github.com/go-delve/delve/cmd/dlv@latest' && \
sudo -u agent bash -c 'go install github.com/swaggo/swag/cmd/swag@latest' && \
sudo -u agent bash -c 'go install github.com/air-verse/air@latest'
# Install popular Go frameworks and libraries
RUN sudo -u agent bash -c 'cd /tmp && go mod init temp && \
go get github.com/gin-gonic/gin@latest && \
go get github.com/gorilla/mux@latest && \
go get github.com/echo-community/echo/v4@latest && \
go get github.com/gofiber/fiber/v2@latest && \
go get gorm.io/gorm@latest && \
go get github.com/stretchr/testify@latest && \
go get github.com/spf13/cobra@latest && \
go get github.com/spf13/viper@latest'
# Install HCFS Go SDK
COPY hcfs-go-sdk /opt/hcfs/go-sdk
RUN cd /opt/hcfs/go-sdk && sudo -u agent go mod tidy
# Create Go project template
RUN sudo -u agent bash -c 'cat > /home/agent/work/go.mod.template << EOF
module hcfs-agent-project
go 1.21
require (
github.com/hcfs/go-sdk v0.1.0
github.com/gin-gonic/gin v1.9.1
github.com/spf13/cobra v1.7.0
github.com/spf13/viper v1.16.0
)
replace github.com/hcfs/go-sdk => /opt/hcfs/go-sdk
EOF'
RUN sudo -u agent bash -c 'cat > /home/agent/work/main.go.template << EOF
package main
import (
"fmt"
"log"
"github.com/hcfs/go-sdk/client"
)
func main() {
// Initialize HCFS client
hcfsClient, err := client.NewHCFSClient("http://host.docker.internal:8000")
if err != nil {
log.Fatal("Failed to create HCFS client:", err)
}
fmt.Println("HCFS Go agent starting...")
// Your agent code here
}
EOF'
# Create Makefile template
RUN sudo -u agent bash -c 'cat > /home/agent/work/Makefile.template << EOF
.PHONY: build run test clean lint fmt
BINARY_NAME=agent
MAIN_PATH=./cmd/main.go
build:
go build -o bin/$(BINARY_NAME) $(MAIN_PATH)
run:
go run $(MAIN_PATH)
test:
go test -v ./...
test-coverage:
go test -v -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
clean:
go clean
rm -f bin/$(BINARY_NAME)
rm -f coverage.out
lint:
golangci-lint run
fmt:
go fmt ./...
goimports -w .
deps:
go mod tidy
go mod download
.DEFAULT_GOAL := build
EOF'
# Go-specific HCFS integration script
COPY scripts/go-hcfs-init.go /opt/hcfs/scripts/
RUN chmod +x /opt/hcfs/scripts/go-hcfs-init.go
# Expose common Go development ports
EXPOSE 8080 8000 9000 2345
# Add Go-specific entrypoint
COPY scripts/go-entrypoint.sh /opt/hcfs/
RUN chmod +x /opt/hcfs/go-entrypoint.sh
ENTRYPOINT ["/opt/hcfs/go-entrypoint.sh"]
CMD ["go", "version"]