Fix database connection issues by using standard PostgreSQL environment variables
This commit is contained in:
parent
5c76451474
commit
1358aefb60
71
start.sh
71
start.sh
@ -688,6 +688,23 @@ export GOCACHE="/app/data/go/cache"
|
||||
export GO111MODULE=on
|
||||
export GOFLAGS="-modfile=/app/data/go/go.mod -mod=mod"
|
||||
|
||||
# Standard PostgreSQL environment variables (critical for Go's database/sql driver)
|
||||
export PGHOST="${CLOUDRON_POSTGRESQL_HOST}"
|
||||
export PGPORT="${CLOUDRON_POSTGRESQL_PORT}"
|
||||
export PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}"
|
||||
export PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}"
|
||||
export PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}"
|
||||
export PGSSLMODE="disable"
|
||||
|
||||
# Try to modify hosts file to block localhost PostgreSQL connections (may not work in containers)
|
||||
if [ -w /etc/hosts ]; then
|
||||
echo "==> Adding entry to /etc/hosts to redirect localhost PostgreSQL"
|
||||
echo "127.0.0.1 postgres-unavailable # Added by Ente startup script" >> /etc/hosts
|
||||
echo "::1 postgres-unavailable # Added by Ente startup script" >> /etc/hosts
|
||||
else
|
||||
echo "==> Cannot modify /etc/hosts (read-only filesystem)"
|
||||
fi
|
||||
|
||||
# Fix database migration state if needed
|
||||
echo "==> Checking database migration state"
|
||||
if [ -d "$SERVER_DIR/cmd/museum" ]; then
|
||||
@ -700,7 +717,20 @@ if [ -d "$SERVER_DIR/cmd/museum" ]; then
|
||||
# Execute as the cloudron user but use a proper script instead of env cd
|
||||
cat > /tmp/run_migration.sh <<EOF
|
||||
#!/bin/bash
|
||||
cd "$SERVER_DIR" && ENTE_PG_HOST="${MUSEUM_DB_HOST}" ENTE_PG_PORT="${MUSEUM_DB_PORT}" ENTE_PG_USER="${MUSEUM_DB_USER}" ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" go run cmd/museum/main.go db force 25
|
||||
cd "$SERVER_DIR" && \
|
||||
PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \
|
||||
PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \
|
||||
PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \
|
||||
PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
|
||||
PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
|
||||
PGSSLMODE="disable" \
|
||||
ENTE_PG_HOST="${MUSEUM_DB_HOST}" \
|
||||
ENTE_PG_PORT="${MUSEUM_DB_PORT}" \
|
||||
ENTE_PG_USER="${MUSEUM_DB_USER}" \
|
||||
ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \
|
||||
ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \
|
||||
ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" \
|
||||
go run cmd/museum/main.go db force 25
|
||||
EOF
|
||||
chmod +x /tmp/run_migration.sh
|
||||
|
||||
@ -739,7 +769,20 @@ elif [ -d "$SERVER_DIR/cmd/museum" ]; then
|
||||
# Create a startup script
|
||||
cat > /tmp/run_server.sh <<EOF
|
||||
#!/bin/bash
|
||||
cd "$SERVER_DIR" && ENTE_PG_HOST="${MUSEUM_DB_HOST}" ENTE_PG_PORT="${MUSEUM_DB_PORT}" ENTE_PG_USER="${MUSEUM_DB_USER}" ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" go run cmd/museum/main.go serve
|
||||
cd "$SERVER_DIR" && \
|
||||
PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \
|
||||
PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \
|
||||
PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \
|
||||
PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
|
||||
PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
|
||||
PGSSLMODE="disable" \
|
||||
ENTE_PG_HOST="${MUSEUM_DB_HOST}" \
|
||||
ENTE_PG_PORT="${MUSEUM_DB_PORT}" \
|
||||
ENTE_PG_USER="${MUSEUM_DB_USER}" \
|
||||
ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \
|
||||
ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \
|
||||
ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" \
|
||||
go run cmd/museum/main.go serve
|
||||
EOF
|
||||
chmod +x /tmp/run_server.sh
|
||||
|
||||
@ -755,6 +798,17 @@ EOF
|
||||
MUSEUM_DB_PASSWORD="$MUSEUM_DB_PASSWORD" \
|
||||
MUSEUM_DB_NAME="$MUSEUM_DB_NAME" \
|
||||
ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" \
|
||||
ENTE_PG_HOST="$MUSEUM_DB_HOST" \
|
||||
ENTE_PG_PORT="$MUSEUM_DB_PORT" \
|
||||
ENTE_PG_USER="$MUSEUM_DB_USER" \
|
||||
ENTE_PG_PASSWORD="$MUSEUM_DB_PASSWORD" \
|
||||
ENTE_PG_DATABASE="$MUSEUM_DB_NAME" \
|
||||
PGHOST="$PGHOST" \
|
||||
PGPORT="$PGPORT" \
|
||||
PGUSER="$PGUSER" \
|
||||
PGPASSWORD="$PGPASSWORD" \
|
||||
PGDATABASE="$PGDATABASE" \
|
||||
PGSSLMODE="$PGSSLMODE" \
|
||||
ENTE_LOG_LEVEL=debug \
|
||||
bash /tmp/run_server.sh > /app/data/logs/museum.log 2>&1 &
|
||||
SERVER_PID=$!
|
||||
@ -783,6 +837,11 @@ func main() {
|
||||
log.Println("MUSEUM_DB_USER:", os.Getenv("MUSEUM_DB_USER"))
|
||||
log.Println("ENTE_PG_HOST:", os.Getenv("ENTE_PG_HOST"))
|
||||
log.Println("ENTE_PG_DSN:", os.Getenv("ENTE_PG_DSN"))
|
||||
log.Println("PGHOST:", os.Getenv("PGHOST"))
|
||||
log.Println("PGPORT:", os.Getenv("PGPORT"))
|
||||
log.Println("PGUSER:", os.Getenv("PGUSER"))
|
||||
log.Println("PGDATABASE:", os.Getenv("PGDATABASE"))
|
||||
log.Println("PGSSLMODE:", os.Getenv("PGSSLMODE"))
|
||||
|
||||
// Add a health endpoint
|
||||
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
|
||||
@ -816,6 +875,14 @@ EOT
|
||||
export ENTE_PG_DATABASE="${MUSEUM_DB_NAME}"
|
||||
export ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable"
|
||||
|
||||
# Make sure we pass the standard PostgreSQL environment variables too
|
||||
export PGHOST="${CLOUDRON_POSTGRESQL_HOST}"
|
||||
export PGPORT="${CLOUDRON_POSTGRESQL_PORT}"
|
||||
export PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}"
|
||||
export PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}"
|
||||
export PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}"
|
||||
export PGSSLMODE="disable"
|
||||
|
||||
go run main.go > /app/data/logs/museum.log 2>&1 &
|
||||
SERVER_PID=$!
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user