
andrewrreed
HF Staff
move postgres files to persistent directory + create directories at runtime, not buildtime
3b9d25e
FROM langfuse/langfuse:2 | |
USER root | |
# Install PostgreSQL and necessary dependencies | |
RUN echo "Installing PostgreSQL..." | |
RUN apk update && apk add --no-cache \ | |
postgresql \ | |
postgresql-contrib | |
# Set up environment variables | |
RUN echo "Setting up environment variables..." | |
ENV DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres | |
ENV NEXTAUTH_SECRET=mysecret | |
ENV SALT=mysalt | |
ENV ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000 | |
ENV NEXTAUTH_URL=http://localhost:3000 | |
# Simplified wrapper script using /data for persistence | |
RUN echo "Creating wrapper script..." | |
COPY <<EOF /docker-entrypoint-wrapper.sh | |
#!/bin/sh | |
# Create necessary directories in the persistent /data volume | |
mkdir -p /data/postgresql/data /data/postgresql/run | |
chmod 0700 /data/postgresql/data | |
chmod 0755 /data/postgresql/run | |
# Initialize PostgreSQL if not already initialized | |
if [ ! -f "/data/postgresql/data/PG_VERSION" ]; then | |
initdb -D /data/postgresql/data | |
fi | |
# Start PostgreSQL with the persistent directories | |
pg_ctl -D /data/postgresql/data -o "-c listen_addresses='*' -c unix_socket_directories='/data/postgresql/run'" start | |
# Create database if it doesn't exist | |
createdb -h /data/postgresql/run -U postgres postgres || true | |
# Wait for PostgreSQL to be ready | |
until pg_isready -h /data/postgresql/run; do | |
echo "Waiting for PostgreSQL to be ready..." | |
sleep 1 | |
done | |
# Update DATABASE_URL to use the correct socket directory | |
export DATABASE_URL="postgresql://postgres:postgres@%2Fdata%2Fpostgresql%2Frun:5432/postgres" | |
# Run the original entrypoint script | |
./web/entrypoint.sh node ./web/server.js --keepAliveTimeout 110000 | |
EOF | |
RUN echo "Setting permissions for wrapper script..." | |
RUN chmod +x /docker-entrypoint-wrapper.sh | |
EXPOSE 3000 5432 | |
RUN echo "Setting entrypoint..." | |
ENTRYPOINT ["dumb-init", "--", "/docker-entrypoint-wrapper.sh"] |