PostgreSQL Custom Docker Image With Volume Entrypoint Questions
Anonymous
TRIALOP

2 years ago

Hello, I have a Docker Image for PSQL with a volume attatched to that service that I am trying to run, on initial startup however, I get the following: PostgreSQL Database directory appears to contain a database; Skipping initialization. How can I have a volume attached but still get this to run? Thanks!

14 Replies

Anonymous
TRIALOP

2 years ago

b2136db9-ae75-4237-ac77-4e079154cc94


2 years ago

please add more context


Anonymous
TRIALOP

2 years ago

Dockerfile:

FROM pgvector/pgvector:pg16
RUN apt-get update && apt-get install -y postgis postgresql-16-postgis-3

Docker Compose:

version: '3.1'

services:
  db:
    image: postgis_and_pg_vector:latest
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      RAG_USER_PASSWORD: ${RAG_USER_PASSWORD}
      PGDATA: ${PGDATA}
    ports:
      - "5432:5432"
    volumes:
      - ./init:/docker-entrypoint-initdb.d
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Volume is mounted at /var/lib/postgresql/data

PGDATA is currently set at /var/lib/postgresql/data/pgdata


2 years ago

railway services can not have two volumes


Anonymous
TRIALOP

2 years ago

Gotcha


Anonymous
TRIALOP

2 years ago

What approach would you recommend here?


2 years ago

your dockerfile would need to copy the docker-entrypoint-initdb.d file into the applicable location


Anonymous
TRIALOP

2 years ago

Okay makes sense, thanks!


2 years ago

but even so, its a init script and will not be ran on every redeploy, it will only be ran if there is an empty data volume


Anonymous
TRIALOP

2 years ago

Yeah that's fine. I'm assuming adding a volume is the only way to persist data in a Railway service? Or will it do it by default?


2 years ago

you are correct, volumes are the only way to persist files on disk


2 years ago

can you add some more context though? what does docker-entrypoint-initdb.d do?


Anonymous
TRIALOP

2 years ago

Just creates some tables and sets up permissions. I only need it on the original creation of the DB


2 years ago

then yeah, copy it into the correct location, and then wipe the volume to allow it to run again


Welcome!

Sign in to your Railway account to join the conversation.

Loading...