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 GO111MODULE=on
|
||||||
export GOFLAGS="-modfile=/app/data/go/go.mod -mod=mod"
|
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
|
# Fix database migration state if needed
|
||||||
echo "==> Checking database migration state"
|
echo "==> Checking database migration state"
|
||||||
if [ -d "$SERVER_DIR/cmd/museum" ]; then
|
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
|
# Execute as the cloudron user but use a proper script instead of env cd
|
||||||
cat > /tmp/run_migration.sh <<EOF
|
cat > /tmp/run_migration.sh <<EOF
|
||||||
#!/bin/bash
|
#!/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
|
EOF
|
||||||
chmod +x /tmp/run_migration.sh
|
chmod +x /tmp/run_migration.sh
|
||||||
|
|
||||||
@ -739,7 +769,20 @@ elif [ -d "$SERVER_DIR/cmd/museum" ]; then
|
|||||||
# Create a startup script
|
# Create a startup script
|
||||||
cat > /tmp/run_server.sh <<EOF
|
cat > /tmp/run_server.sh <<EOF
|
||||||
#!/bin/bash
|
#!/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
|
EOF
|
||||||
chmod +x /tmp/run_server.sh
|
chmod +x /tmp/run_server.sh
|
||||||
|
|
||||||
@ -755,6 +798,17 @@ EOF
|
|||||||
MUSEUM_DB_PASSWORD="$MUSEUM_DB_PASSWORD" \
|
MUSEUM_DB_PASSWORD="$MUSEUM_DB_PASSWORD" \
|
||||||
MUSEUM_DB_NAME="$MUSEUM_DB_NAME" \
|
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_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 \
|
ENTE_LOG_LEVEL=debug \
|
||||||
bash /tmp/run_server.sh > /app/data/logs/museum.log 2>&1 &
|
bash /tmp/run_server.sh > /app/data/logs/museum.log 2>&1 &
|
||||||
SERVER_PID=$!
|
SERVER_PID=$!
|
||||||
@ -783,6 +837,11 @@ func main() {
|
|||||||
log.Println("MUSEUM_DB_USER:", os.Getenv("MUSEUM_DB_USER"))
|
log.Println("MUSEUM_DB_USER:", os.Getenv("MUSEUM_DB_USER"))
|
||||||
log.Println("ENTE_PG_HOST:", os.Getenv("ENTE_PG_HOST"))
|
log.Println("ENTE_PG_HOST:", os.Getenv("ENTE_PG_HOST"))
|
||||||
log.Println("ENTE_PG_DSN:", os.Getenv("ENTE_PG_DSN"))
|
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
|
// Add a health endpoint
|
||||||
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
|
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_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"
|
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 &
|
go run main.go > /app/data/logs/museum.log 2>&1 &
|
||||||
SERVER_PID=$!
|
SERVER_PID=$!
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user