Fix go.mod setup and improve mock server for better API compatibility
This commit is contained in:
parent
956d39fca5
commit
92f5c76955
95
start.sh
95
start.sh
@ -519,6 +519,11 @@ cat > /app/data/caddy/Caddyfile <<EOT
|
||||
respond "OK" 200
|
||||
}
|
||||
|
||||
# API health check endpoint - direct proxy to API
|
||||
handle /api/health {
|
||||
reverse_proxy localhost:$API_PORT
|
||||
}
|
||||
|
||||
# Root handler
|
||||
handle / {
|
||||
root * /app/data/public
|
||||
@ -724,6 +729,32 @@ if [ $? -ne 0 ]; then
|
||||
fi
|
||||
echo "==> Successfully connected to database"
|
||||
|
||||
# Create proper Go module environment
|
||||
echo "==> Setting up Go module environment"
|
||||
if [ -f "$SERVER_DIR/go.mod" ]; then
|
||||
echo "==> Found go.mod in $SERVER_DIR"
|
||||
mkdir -p /app/data/go
|
||||
cp "$SERVER_DIR/go.mod" "/app/data/go/go.mod"
|
||||
if [ -f "$SERVER_DIR/go.sum" ]; then
|
||||
cp "$SERVER_DIR/go.sum" "/app/data/go/go.sum"
|
||||
fi
|
||||
echo "==> Copied go.mod to /app/data/go/go.mod"
|
||||
else
|
||||
echo "==> WARNING: No go.mod found in $SERVER_DIR"
|
||||
# Create a minimal go.mod file
|
||||
mkdir -p /app/data/go
|
||||
cat > /app/data/go/go.mod <<EOT
|
||||
module ente.io/museum
|
||||
|
||||
go 1.24
|
||||
EOT
|
||||
echo "==> Created minimal go.mod in /app/data/go/go.mod"
|
||||
fi
|
||||
# Ensure the right permissions
|
||||
chmod 644 /app/data/go/go.mod
|
||||
# Setup Go directories
|
||||
mkdir -p /app/data/go/pkg/mod /app/data/go/cache
|
||||
|
||||
# Fix database migration state if needed
|
||||
echo "==> Checking database migration state"
|
||||
if [ -d "$SERVER_DIR/cmd/museum" ]; then
|
||||
@ -733,8 +764,18 @@ if [ -d "$SERVER_DIR/cmd/museum" ]; then
|
||||
# Create migrations log directory
|
||||
mkdir -p /app/data/logs/migrations
|
||||
|
||||
# Set Go environment variables
|
||||
export GOMODCACHE="/app/data/go/pkg/mod"
|
||||
export GOCACHE="/app/data/go/cache"
|
||||
export GO111MODULE=on
|
||||
export GOFLAGS="-modfile=/app/data/go/go.mod -mod=mod"
|
||||
|
||||
echo "==> Forcing migration version to 25"
|
||||
if /usr/local/bin/gosu cloudron:cloudron env GOCACHE=/app/data/go/cache GOMODCACHE=/app/data/go/pkg/mod \
|
||||
if /usr/local/bin/gosu cloudron:cloudron env \
|
||||
GOCACHE="$GOCACHE" \
|
||||
GOMODCACHE="$GOMODCACHE" \
|
||||
GO111MODULE=on \
|
||||
GOFLAGS="$GOFLAGS" \
|
||||
go run cmd/museum/main.go db force 25 > /app/data/logs/migrations/force.log 2>&1; then
|
||||
echo "==> Successfully forced migration version"
|
||||
else
|
||||
@ -746,7 +787,7 @@ else
|
||||
echo "==> Skipping migration state check: cmd/museum not found"
|
||||
fi
|
||||
|
||||
# Start the Museum server
|
||||
# Start the Museum server with proper environment variables
|
||||
echo "==> Starting Museum server"
|
||||
cd "$SERVER_DIR"
|
||||
|
||||
@ -758,6 +799,10 @@ export MUSEUM_DB_USER="${CLOUDRON_POSTGRESQL_USERNAME}"
|
||||
export MUSEUM_DB_PASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}"
|
||||
export MUSEUM_DB_NAME="${CLOUDRON_POSTGRESQL_DATABASE}"
|
||||
export ENTE_LOG_LEVEL=debug
|
||||
export GOMODCACHE="/app/data/go/pkg/mod"
|
||||
export GOCACHE="/app/data/go/cache"
|
||||
export GO111MODULE=on
|
||||
export GOFLAGS="-modfile=/app/data/go/go.mod -mod=mod"
|
||||
|
||||
# Check if there's a pre-built binary
|
||||
MUSEUM_BIN=""
|
||||
@ -776,17 +821,53 @@ if [ -n "$MUSEUM_BIN" ]; then
|
||||
SERVER_PID=$!
|
||||
elif [ -d "$SERVER_DIR/cmd/museum" ]; then
|
||||
echo "==> Starting Museum from source"
|
||||
/usr/local/bin/gosu cloudron:cloudron env GOCACHE=/app/data/go/cache GOMODCACHE=/app/data/go/pkg/mod \
|
||||
/usr/local/bin/gosu cloudron:cloudron env \
|
||||
GOCACHE="$GOCACHE" \
|
||||
GOMODCACHE="$GOMODCACHE" \
|
||||
GO111MODULE=on \
|
||||
GOFLAGS="$GOFLAGS" \
|
||||
go run cmd/museum/main.go serve > /app/data/logs/museum.log 2>&1 &
|
||||
SERVER_PID=$!
|
||||
else
|
||||
echo "==> ERROR: Museum server not found"
|
||||
echo "==> Starting a mock server"
|
||||
|
||||
# Create a simple mock server using netcat
|
||||
while true; do
|
||||
echo -e "HTTP/1.1 503 Service Unavailable\nContent-Type: application/json\n\n{\"error\":\"Museum server not available\"}" | nc -l -p $API_PORT
|
||||
done &
|
||||
# Create a temporary directory for a simple Go server
|
||||
mkdir -p /tmp/mock-server
|
||||
cat > /tmp/mock-server/main.go <<EOT
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Add a health endpoint
|
||||
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
fmt.Fprint(w, `{"status":"ok","message":"Mock server running"}`)
|
||||
})
|
||||
|
||||
// Handle all other requests
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
fmt.Fprintf(w, `{"status":"mock","endpoint":"%s","method":"%s"}`, r.URL.Path, r.Method)
|
||||
})
|
||||
|
||||
// Start the server
|
||||
log.Printf("Starting mock server on port %d\n", 8080)
|
||||
|
||||
if err := http.ListenAndServe(":8080", nil); err != nil {
|
||||
log.Fatalf("Failed to start server: %v", err)
|
||||
}
|
||||
}
|
||||
EOT
|
||||
|
||||
# Run the mock server
|
||||
cd /tmp/mock-server
|
||||
go run main.go > /app/data/logs/museum.log 2>&1 &
|
||||
SERVER_PID=$!
|
||||
|
||||
echo "==> Mock server started with PID $SERVER_PID"
|
||||
|
Loading…
x
Reference in New Issue
Block a user